有没有办法检查一个类是否有主方法?

时间:2012-03-01 08:49:29

标签: java parsing main

我正在尝试使用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;
            }

4 个答案:

答案 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。