我已将两个单独的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()
?
答案 0 :(得分:1)
如果两个主要应用程序都可以在同一个JVM中运行,并且调用是同步的,那么这应该可行。
String[] args = { "arg1" };
alternative.main.main(args);
如果调用不应该是同步的,但可以是同一JVM中的不同线程,那么您可以创建一个调用替代main
方法的新线程。
如果它必须是一个单独的进程/ JVM,那么你所做的就足够了。或者,您可以使用java.lang.ProcessBuilder
。
答案 1 :(得分:1)
你试过吗
alternative.main.main(new String[]{arg1});