我正在做一个项目,需要获取任意数量的java文件,编译它们,jar它们,然后运行它们。我面临的问题是:我们运行哪个类?是否可以在一组类中找到入口点?
我愿意假设给定的文件只有一个入口点。
以下是我到目前为止所考虑的:
- 向每个使用反射查找具有 main() 的类的 jar 添加一个帮助程序类。若要运行 jar,请调用该帮助程序类。
- 将用户命名为 main() 类"Main",或类似的东西。
有没有好办法解决这个问题?这个软件是为学生和新手程序员准备的,所以我愿意为了简单而牺牲健壮性。
谢谢!
我脑海中的一个想法可能是自定义注释。 它比命名约定更健壮一些,但比创建清单文件更容易。
像这样:
@MainClass
public class MyClass {
public static void main(String [] args) {
// ...
}
}
您的工具可以扫描类以查找注记。
知道哪个类包含main()的最佳方法是在JAR文件中提供一个调用主类的清单。
但是,您在问题中关于以某种方式命名其主类的建议也可能有助于您教他们约定与配置,这是一件有用的事情。