【发布时间】:2013-06-19 10:31:44
【问题描述】:
我已将共享大量代码的两个单独的 JAR 合并到一个 JAR 中。到目前为止没问题,因为您可以在一个 JAR 中拥有多个 static void main()。
直接调用主应用:
java -jar myjar.jar arg1 arg2
另一个应用程序需要显式调用它的替代main():
java -classpath myjar.jar alternative.main arg1
也不是什么大问题。
但是,现在我必须从 within 主应用程序中调用 alternative 应用程序。
我可以这样做:
Runtime.getRuntime().exec( "java -classpath myjar.jar alternative.main arg1" );
但这让我觉得缺乏技巧。是否有一些更优雅/更有效的方式来开始第二个替代main()?
【问题讨论】:
-
如果它无论如何都在一个罐子里,你不能简单地调用另一个
main方法吗?还是您需要单独的操作系统进程/JVM? -
1) 如果回退到使用
Process。阅读(并实施)所有When Runtime.exec() won't 的建议。那可能会解决问题。如果不是,它应该提供更多关于失败原因的信息。然后忽略它引用exec并使用ProcessBuilder构建Process。还要将String arg分解为String[] args以说明本身包含空格的参数。 2)这真的闻起来很糟糕,除非第一个应用程序。是一个'应用程序。套件启动工具栏”。 -
@AndrewThompson:糟糕的设计,一开始就应该是一个应用程序。不幸的是,有时你不得不忍受低于标准的设计,因为全面的重构不符合预算......
标签: java process runtime.exec