2014-09-01 123 views
-1

我試圖從另一個Java程序運行一個jar文件。 當前代碼:從Java程序運行.jar文件與參數

ProcessBuilder pb = new ProcessBulder("java", "-Djava=\"libs\\native\\windows\"", "-jar", "example.jar", arg1, arg2, arg3); 
pb.directory(new File("my\\directory\\folder")); 
Process process = pb.start(); 

當該代碼被執行我沒有得到任何錯誤,並沒有出現真正發生。

+0

就是Java的道路上? – MrTux 2014-09-01 12:47:45

+1

無論你的實際問題如何:你爲什麼不將jar添加到你的類路徑中,只需調用jar的主要方法? – mabi 2014-09-01 12:47:46

+0

將jar添加到類路徑是一種更好的做事方式。我在這方面有點小氣,所以我沒有想到這一點。謝謝你的幫助。 – redonkulasman 2014-09-01 12:58:45

回答

0

隨着ProcessBuilder.start()你開始一個新的線程。 documentation指出:

默認情況下,創建的子進程沒有自己的終端或控制檯。它的所有標準I/O(即標準輸入,標準輸出,標準錯誤)操作將被重定向到父進程

所以,如果你沒有特別要求它,你將永遠不會看到這個過程的結果(這包括它啓動時的錯誤信息)。

更好的替代方法根本不依賴於ProcessBuilder。如果您的調用者是一個JVM類,只包括像這樣在你的應用程序的類路徑的JAR:

java -classpath ./example.jar -jar myApp.jar 

然後,您就可以自由地調用example的方法:

public class MyApp { 
    public static void main(String[] args) { 
     Example.main(new String[] { "bla", "blubb", "blabb" }); 
    } 
} 
相關問題