判斷當前jar包是否存在於某個類名

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.JarURLConnection;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Objects;
import java.util.jar.JarEntry;
import java.util.jar.JarFile; 
/**
     * 判斷當前jar包是否存在於某個類名
     * @param path jar包路徑
     * @param driver 類名
     * @return
     */
    private static Boolean getClazzName(String path,String driver) {
        List<String> list = new ArrayList<String>();
        try {
            JarFile jarFile = new JarFile(path);
            Enumeration enu = jarFile.entries();
            while (enu.hasMoreElements()) {
                JarEntry jarEntry = (JarEntry) enu.nextElement();
                String name = jarEntry.getName();
                // 過濾出 class 文件
                if (name.endsWith(".class") && name.indexOf("$") == -1 ) {
                    // 重新格式化文件名
                    name = name.substring(0, name.indexOf(".class"));
                    name = name.replaceAll("/", ".");
//                    System.out.println(name);
                    list.add(name);
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return  list.stream().anyMatch(l -> Objects.equals(l, driver));
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章