【发布时间】:2016-01-25 21:51:20
【问题描述】:
我正在尝试检测 jar 中的哪个类包含 main 或提供的方法名称(如果可能)。
目前我有以下代码
public static void getFromJars(String pathToAppJar) throws IOException{
FileInputStream jar = new FileInputStream(pathToAppJar);
ZipInputStream zipSteam = new ZipInputStream(jar);
ZipEntry ze;
while ((ze = zipSteam.getNextEntry()) != null) {
System.out.println(ze.toString());
}
zipSteam.close();
}
这将允许我获取这些包下的包和类,但我不知道是否甚至可以获取类内部的方法。 此外,我不知道这种方法是否适用于 jar 中包含多个 pkg 的情况,因为每个包都可以有一个包含 main 的类。
我会很感激任何想法。
【问题讨论】:
-
您可以使用java反编译器并搜索反编译结果:jd.benow.ca
-
确实如此,我现在正在使用它,但我想要更自动的东西
-
你见过stackoverflow.com/questions/9314541/… 吗?一旦你掌握了每个单独的班级,打电话
getMethods()应该会给你你需要的信息。 -
请注意,建议的方法是自定义类加载器的一部分,它扩展了
URLClassLoader。应该有一些例子,但我现在找不到除了examples.javacodegeeks.com/core-java/net/urlclassloader/… 之外的好例子。