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

时间:2011-05-11 00:15:38

标签: java main launch

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

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

3 个答案:

答案 0 :(得分:25)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

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