2017-01-17 60 views
-2

我正在嘗試創建一個執行cmd行中的.jar的流程生成器。我有它在Windows上工作很好,但由於我不熟悉Mac或Linux的工作原理,我不知道他們的CMD線。ProcessBuilder for Mac OS&Linux

這裏是我的代碼:

ProcessBuilder pb = new ProcessBuilder(new String[] { "java", "-jar", Settings.SAVE_DIR + Settings.SAVE_NAME}); 
      pb.directory(new File(System.getProperty("java.home") + File.separator + "bin")); 
      final Process proc = pb.start(); 

誰能幫我找到適合於Linux/Mac上的CMD線?

+0

「Settings.SAVE_DIR」和「Settings.SAVE_NAME」的值是什麼? – Andreas

+0

@Andreas SAVE_NAME =「name.jar」; \t SAVE_DIR = System.getProperty(「user.home」)+ File.separator; –

+1

實際上是在'〜/ name.jar'上的jar文件嗎?你的代碼不工作的方式是什麼? – Andreas

回答

1

錯誤,您爲什麼要使用流程生成器從Java內部運行Java應用程序?

只要確保其他JAR在您的類路徑中;然後運行該JAR的「主要方法」。如果你擔心分離,你仍然可以使用一個特殊的類加載器。

那麼,爲什麼要繞過你的JVM?

而關於您的實際問題:只需嘗試構建您的命令...先手動。我的意思是:在linux/mac系統上打開一個shell,並且輸入你想要的命令行;並繼續嘗試,直到你得到它的工作。然後看看那個;並確定以獨立於平臺的方式創建該事物的最簡單方法。

+0

使用反射來執行主要方法與我試圖執行的程序有關。 ClassLoader似乎沒有加載我正在執行的程序中的所有資源,並且重載loadResource,然後我需要做更多的工作。 –