4

我正在开发一个项目,该项目需要获取任意数量的 java 文件,对其进行编译、打包,然后运行它们。我面临的问题是:我们跑哪个班?是否可以在一组类中找到入口点?

我愿意假设给定的文件只有一个入口点。

这是我到目前为止所考虑的:

  • 向每个使用反射查找带有 main() 的类的 jar 添加一个辅助类。要运行 jar,请调用该帮助程序类。
  • 将用户命名为他们的 main() 类“Main”,或者类似的东西。

有什么好的方法可以解决这个问题吗?这个软件是为学生和新手程序员设计的,所以我愿意为了简单而牺牲健壮性。

谢谢!

4

2 回答 2

2

我脑海中浮现的一个想法可能是自定义注释。它比命名约定更健壮,但比创建清单文件更容易。

就像是:

@MainClass
public class MyClass {
   public static void main(String [] args) {
      // ...
   }
}

您的工具可以扫描类以查找注释。

于 2012-06-25T14:52:58.813 回答
1

了解哪个类包含 main() 的最佳方法是在调用主类的 JAR 文件中提供清单。

但是,您在以某种方式命名他们的主类的问题中的建议也可能有助于您教他们约定与配置,这是一件有用的事情。

于 2012-06-25T14:51:54.247 回答