我有一个jar文件。我想知道哪些外部类和方法是由JAR文件内的类使用的。谁能给我推荐什么工具吗?
例如-如果以下两个类被打包到 Myjar.jar 中
import java.util.Vector;
class MyJarClass{
public static void main(String args[]){
Vector v = new Vector();
AnotherClass another = new AnotherClass();
v.addElement("one");
another.doSomething();
}
}
class AnotherClass{
void doSomething(){
}
}
当我将JAR提供给工具时-工具应该显示java.util.Vector
和Vector.adElements()
来自外部源(* MyJar.jar * 中不存在)
忘了说了,我没有访问源代码。
5条答案
按热度按时间jqjz2hbq1#
"轻松"
可能
"一个挑战"
"不可能完成的使命"
我支持Jon的建议,即查看字节码(BCEL),但要注意,通常不可能从jar中读取所有依赖项,因为它们可以是动态的,并且可以在库外部定义(请参见:不可能完成的使命)。
很难判断是否有工具,请查看java-source.net上的这些目录:
进一步阅读
bwleehnv2#
你可能想看看BCEL,它将允许你解析类文件,并找出它们使用的是什么。
lf5gs5x23#
检查untangle
它是一个小的cli实用程序,用于在包含类的jar或目录中搜索类或包的用法。
免责声明:我是untangle的作者
mmvthczy4#
检查JDepend
图形用户界面显示每个分析的Java包的传入和传出耦合,以熟悉的JavaSwing树结构呈现。
hpcdzsge5#
JavaDepend可以帮助你满足这样的需求,你可以为任何代码元素获取所使用的所有元素,它可以是jar、命名空间、类或方法。
CQL是一种类似于查询代码库的SQL,它为您提供了更多的灵活性来请求有关代码的任何信息。