我正在尝试使用Java获取项目中所有类的列表,并且我想确定main方法所在的类。有没有办法能够识别一个类正在实现main方法,而不是实际查看类本身的代码?
我已实现以下内容,但返回值始终为false。有谁知道为什么会这样?
Class<?> c = "edu.tool.parsing.A".getClass();
boolean hasMain = true;
try {
c.getMethod("main", String[].class);
hasMain=true;
} catch (SecurityException e) {
hasMain = true;
} catch (NoSuchMethodException e) {
hasMain=false;
}
答案 0 :(得分:8)
编程:
Class.getClass("com.mycompany.MyClass").getMethod("main", String[].class)
或者您可以使用可在JDK bin目录中找到的命令行实用程序javap
。
答案 1 :(得分:3)
如果您有班级名称,则可以尝试反映main
方法。
琐碎(不完整)的方法:
private static hasMainMethod(Class<?> clazz) throws Exception {
Method[] methods = clazz.getMethods();
for (Mehthod method:methods) {
if (method.getName().equals("main") {
// Now we have to verify the method signature!
return true;
}
}
return false;
}
答案 2 :(得分:0)
可能有不止一个这样的课程。可能有几十个。你为什么不提前知道入口点?你可能最好看一下JAR Manifest中的Main-Class条目。
答案 3 :(得分:-1)
在IDE中加载项目(我使用过IDEA)然后,添加本地运行,IDEA将使用main方法列出所有类。
如果您没有源代码并且只有jar文件,那没关系,只需将jar文件添加为项目库,然后创建RUN。