2

我已将共享大量代码的两个单独的 JAR 合并到一个 JAR 中。static void main()到目前为止没问题,因为你可以在一个 JAR中拥有多个。

直接调用主应用程序:

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()

4

2 回答 2

1

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

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

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

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

于 2013-06-19T10:38:58.977 回答
1

你试过了吗

alternative.main.main(new String[]{arg1});
于 2013-06-19T10:41:28.410 回答