java - 获取 JAR 使用的所有外部源路径

标签 java jar decompiling

我在查找 .jar 文件使用的所有外部库时遇到问题。我的 .jar 文件非常大,手动反编译它并遍历每个类、检查所有使用的路径是不可能的。我想知道是否有一种方法或工具可以遍历 .jar 文件,并列出 .jar 文件中不存在的类的所有外部路径/链接?

P.S:我不是在问“最好的工具是什么?”,我只需要知道如何获取 .jar 文件使用的所有外部路径,而无需手动反编译它。

最佳答案

试试这个:

  1. 提取 jar 内容
  2. 在目录中搜索通过管道传输到文本文件的 *.class
  3. 过滤掉内部类和匿名类。 (类文件名带有 $)
  4. 编写一个小程序,只需循环遍历列表并加载类定义(Class.forName() 就足够了)
  5. 使用通过管道传输到文本文件的选项 -verbose:class 运行 jar
  6. 程序完成后,您将获得从管道文件中相应 jar 加载的类的完整列表
  7. 过滤掉 rt.jar 内容以获得更清晰的列表

我不确定 -verbose:class 是否适用于混淆的代码,从逻辑上讲,我认为它应该没问题。

关于java - 获取 JAR 使用的所有外部源路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26154448/

相关文章:

java - 当我使用 Executors.newSingleThreadScheduledExecutor 创建 ScheduledExecutorService 时,它​​运行许多线程

java - 合并/加入两个大文件

java - 错误的整数值 :'javax. swing.JFormattedtextField

java - 如何读取 .class 文件的完全限定名称

java - 如何正确重新编译apk文件?

c# - Java和C#中某些特性的具体性能差异

java - 尝试将 JAR 文件添加到项目中,但出现 NoClassDefFoundError

java - 如何从 URL 中提取 jar 文件

php - 在 php 中执行 .jar 时出现问题

java - 为什么反编译的 java 程序并不总是可以直接编译,哪些部分不能?