我已將兩個單獨的JAR(共享大量代碼)合併到一個JAR中。目前爲止沒有問題,因爲您可以在JAR中使用多個static void main()
。帶多個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()
?
如果是在一個罐子反正,不能你只需** **調用其他'main'方法?或者你需要單獨的操作系統進程/ JVM嗎? –
1)如果退回到使用'Process'。閱讀(並實現)*所有* [當Runtime.exec()不會](http://www.javaworld.com/jw-12-2000/jw-1229-traps.html)的建議。這可能會解決問題。如果不是,它應該提供更多關於失敗原因的信息。然後忽略它引用'exec'並使用'ProcessBuilder'構建'Process'。還要將'String arg'分解爲'String [] args'來解釋其本身包含空格的參數。 2)除非第一個應用程序,否則這真的是糟糕的設計。是一個'應用程序。套件啓動工具欄「。 –
@AndrewThompson:糟糕的設計是,它應該是一個單一的應用程序開始。不幸的是,有時候你不得不接受低於平均水平的設計,因爲全面的重構不適合預算...... – DevSolar