【问题标题】:Analyze and get code/string of a jar file - Java分析并获取 jar 文件的代码/字符串 - Java
【发布时间】:2017-10-13 10:43:31
【问题描述】:

我想分析一个 jar 文件的代码(或字符串)(例如:如果一个 jar 文件包含“奶酪”),我搜索了很多但我不知道该怎么做:/ 我不想使用 JD-GUI,因为我的程序必须是自动的(用户按下按钮,然后他必须知道 jar 文件是否包含特定方法(例如“public void onEnable()”或字符串(例如“奶酪”))

我搜索并找到了:

analyze jar file programmatically

Extract source code from .jar file

https://tomassetti.me/getting-started-with-javaparser-analyzing-java-code-programmatically/

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javap.html

How to search for a string in JAR files

【问题讨论】:

标签: java string jar contains analyzer


【解决方案1】:

类似的东西:

  • JarInputStream打开罐子
  • 为每个 JarEntry 做一个 Class.forName 来加载类(正确组合包)
  • 使用反射获取方法名称 (Class.getMethods)
  • 将名称和所需属性添加到列表以进行搜索。除非您使用巨大的罐子或非常旧的硬件,否则您可以使用 contains() 或 matches() 对名称列表进行简单的完整扫描,可能您不需要花哨的索引工具(Sphinx、Lucene 等)。 如果 RegExp 部分应该很慢,请创建一个 regexp Pattern 实例并重用它。

一个快速的 (Linux) 替代方案,仅用于类名,是这样的:

jar tvf file.jar | grep 类名

【讨论】:

  • 谢谢!完美运行!
  • File.listFiles(...) 是您正在寻找的方法。如果您也想包含子目录,请查看 Apache commons.io FileUtils.iterateFilesAndDirs
猜你喜欢
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
  • 2015-05-31
  • 2013-12-12
  • 1970-01-01
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
相关资源
最近更新 更多