利用反射打印出 Jar包中所有的类名和方法

本文介绍了如何使用Java反射技术来遍历并打印Jar包内的所有类名和方法。当遇到ClassNotFoundException时,可能是因为类依赖了其他Jar包。解决方案包括将引用的Jar文件放在可找到的位置、创建包含所有依赖的Uber-jar,或者编写特殊类加载器。建议避免使用JAR-in-a-JAR结构,而是采用前两种方法解决依赖问题。
摘要由CSDN通过智能技术生成


public class Test {

public static void getJarClassNameAndMethod(String jarFile) throws Exception {
        try {
        File f=new File(jarFile);// 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例
        URL url1=f.toURI().toURL();
            URLClassLoader myClassLoader=new URLClassLoader(new URL[]{url1},Thread.currentThread().getContextClassLoader()); 
            
               //通过jarFile 和JarEntry得到所有的类
              JarFile jar = new JarFile(jarFile);
              Enumeration<JarEntry> enumFiles = jar.entries();//返回 zip 文件条目的枚举
              JarEntry entry; 
              while (enumFiles.hasMoreElements()) {//测试此枚举是否包含更多的元素。 
              entry = (JarEntry) enumFiles.nextElement();
                if (entry.getName().indexOf("META-INF") < 0) {
                    String classFullName = entry.getName();
                    if (classFullName.indexOf(".class") < 0)
                    {
                        classFullName = classFullName.substring(0, classFullName.length() - 1);
                    }
                    else
                    {

                        String className = classFullName.substri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值