JAR有多个main() - 如何从第一个启动第二个应用程序?

时间:2013-06-19 10:31:44

标签: java process runtime.exec

我已将两个单独的JAR加入到一个JAR中,这些JAR共享了大量代码。到目前为止没问题,因为JAR中可以有多个static void main()

主要应用程序直接调用:

java -jar myjar.jar arg1 arg2

另一个应用程序需要显式调用其替代main()

java -classpath myjar.jar alternative.main arg1

也没有太大问题。

但是,现在我必须从主要的中的中调用替代应用程序。

我可以这样做:

Runtime.getRuntime().exec( "java -classpath myjar.jar alternative.main arg1" );

但这让我觉得缺乏一些技巧。是否有一些更优雅/有效的方式来启动第二个替代main()

2 个答案:

答案 0 :(得分:1)

如果两个主要应用程序都可以在同一个JVM中运行,并且调用是同步的,那么这应该可行。

String[] args = { "arg1" };
alternative.main.main(args);

如果调用不应该是同步的,但可以是同一JVM中的不同线程,那么您可以创建一个调用替代main方法的新线程。

如果它必须是一个单独的进程/ JVM,那么你所做的就足够了。或者,您可以使用java.lang.ProcessBuilder

答案 1 :(得分:1)

你试过吗

alternative.main.main(new String[]{arg1});