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

如何在Java可执行文件.jar中启动多个主程序?,java,main,launch,Java,Main,Launch,我正在写一个包含多个包的程序。每个包都有自己的主程序,我希望在解释器执行.jar时,所有程序都能同时启动。这似乎是一个相当简单的问题,但当我环顾四周时,人们似乎在使用蚂蚁(我以前从未使用过)和其他方法。在Eclipse中有没有一种更简单的方法来编译具有多个启动配置的.jar,更好的是,有没有一种方法来硬编码它 如果最好的发射方式是通过蚂蚁。如果我想发布,我会写什么样的ant脚本。。。说出包com.myapp.package1.main、com.myapp.package2.main和com.my

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


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

您可以创建一个主“main”类来执行其余部分。

jar清单允许您选择指定不超过一个主类。当您使用
-jar
标志执行
java
时,将调用此函数

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

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虚拟机,每个虚拟机都在自己的进程中。显然,这不符合“可执行jar”的要求

或者,您可能希望有一个主方法来启动单独的线程,这样就只有一个进程,而不是并发执行


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

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

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

但在这里,您应该注意路径,并正确结束进程,否则您的计算机可能会达到文件描述符的限制。

好的,主要是,我希望这些包几乎独立运行,因此我不希望主程序执行其他主程序。好的,它们仍然是独立的,这将只启动您的程序。如果你能提供更多关于你想做什么的信息,我或其他人可能会为你的案例提出更合适的解决方案。不,Java启动器总是从一个线程和一个类的主方法开始。如果你需要更多,你必须自己做。