anu*_*sth 5 java jvm jar java-me
我有一个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(){
}
}
Run Code Online (Sandbox Code Playgroud)
当我将JAR提供给工具时 - 该工具应显示java.util.Vector并Vector.adElements()来自外部源(MyJar.jar中不存在)
忘了提,我没有访问源代码.
简单的
import com.example.*;
Run Code Online (Sandbox Code Playgroud)
可能的
List<com.example.MyType> = new ArrayList<com.example.MyType>();
Run Code Online (Sandbox Code Playgroud)
一个挑战
Class<?> clazz = Class.forName("com.example.MyType");
Run Code Online (Sandbox Code Playgroud)
不可能完成的任务
List<String> classes = getClassNamesFromUrl("http://example.com/classes.txt");
for (String className:classes) {
doSomethingWith(Class.forName(className));
}
Run Code Online (Sandbox Code Playgroud)
我支持乔恩的建议,即查看字节码(BCEL),但请注意,通常不可能从 jar 中读取所有依赖项,因为它们可以是动态的并在库外部定义(请参阅:不可能的任务)。
很难判断是否有工具,看看java-source.net上的那些目录:
进一步阅读