如何在Java可执行文件.jar中启动多个主程序?

我正在编写一个包含多个包的程序。 每个包都有自己的主程序,我希望在解释器执行.jar时同时启动它们。 这似乎是一个相当简单的问题,但当我环顾四周时,似乎人们正在使用ant(我之前从未使用过)和其他方法。 在Eclipse中是否有一种更简单的方法来编译具有多个启动配置的.jar,更好的是,有没有办法对其进行硬编码?

如果推出这个的最好方法是通过ant。 如果我想要发布,我会写什么样的ant脚本…说com.myapp.package1.main,com.myapp.package2.main和com.myapp.package3.main包中的主要程序。 提前致谢!

jar清单允许您可选地指定不超过一个主类。 使用-jar标志执行java时会调用此方法。

 java -jar myapp.jar 

您可以在一个jar中包含多个主类,但必须使用-classpath标志和指定的主类的完全限定名称来调用每个主类(除了上面的可选1)。

 java -classpath myapp.jar com.mypackage.app.Main01 && \ java -classpath myapp.jar com.mypackage.app.Main02 && \ java -classpath myapp.jar com.mypackage.app.Main03 

上面的示例将生成三个独立的Java VM,每个VM都在自己的进程中。 显然,这不符合您对“可执行jar”的要求。

或者,您可能希望有一个主要方法来启动单独的线程,因此只有一个进程,但并发执行。

Ant不是帮助您解决此问题的合适选择。 我怀疑你可能想要一个产生多个线程的主要方法。 随时提供有关您的要求的更多信息。

您可以创建一个主“main”类来执行其余的操作。

可能我会坚持使用MANIFEST解决方案,但还有另一种可能性:

 Process p = Runtime.getRuntime().exec("java -jar another.jar"); 

但是在这里你应该小心路径并且应该正确结束进程,否则你的机器可以达到文件描述符的限制。