判断当前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 list = new ArrayList();
        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));
    }

 

你可能感兴趣的:(java)