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



我正在尝试用Java获取项目中所有类的列表,我想确定主方法所在的类。有没有一种方法可以识别类正在实现主方法,而无需实际查看类本身的代码?

我已经实现了以下内容,但返回值总是为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;
            }

编程:

Class.getClass("com.mycompany.MyClass").getMethod("main", String[].class)

或者,您可以使用命令行实用程序javap,它可以在JDK bin目录中找到。

如果您有类名,那么您可以尝试反映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;
}

这样的类可能不止一个。可能有几十个。你为什么不提前知道切入点?您最好查看JAR清单中的Main Class条目。

将您的项目加载到IDE中(我曾使用过IDEA),然后添加一个本地运行,IDEA会用main方法列出所有类。

如果你没有源代码,只有jar文件,那没关系,只需将jar文件添加为项目的库,然后创建一个RUN。

相关内容

  • 没有找到相关文章