我正在编写一个包含多个包的程序。每个包都有自己的主程序,我希望在解释器执行.jar时同时启动它们。这似乎是一个相当简单的问题,但当我环顾四周时,似乎人们正在使用蚂蚁(我之前从未使用过)和其他方法。在Eclipse中是否有一种更简单的方法来编译具有多个启动配置的.jar,更好的是,有没有办法对其进行硬编码?
如果推出这个的最好方法是通过蚂蚁。如果我想要发布,我会写什么样的蚂蚁脚本...说com.myapp.package1.main,com.myapp.package2.main和com.myapp.package3.main包中的主要程序。提前谢谢!
答案 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");
但是在这里你应该小心路径并且应该正确结束进程,否则你的机器可以达到文件描述符的限制。