2017-05-03 37 views
1

我們在ProcessBuilder和OSX版本的應用程序中遇到了一個奇怪的問題。這在我們切換到universalJavaApplicationStub時開始。以前我們使用AppBundlerTask。 注:不能做一個樣品類,你需要建立一個完整的Mac應用程序捆綁看到這樣的結果:如果從OSX應用程序包運行,ProcessBuilder無法找到文件

我們的代碼,啓動過程是:

log.debug("render: {}", Arrays.toString(myCommandLine.toArray())); 
log.debug("render: dir={}", m_workingDir); 
final ProcessBuilder processBuilder = new ProcessBuilder(myCommandLine); 
processBuilder.directory(new File(m_workingDir)); 
final Process process = processBuilder.start(); 

和日誌輸出看像這樣:

render: [/Applications/EFI/Metrix/bin/cli/rasters, --saveasimg, --pagebox=MEDIABOX, --smoothing=All] 
render: dir=/Applications/EFI/Metrix/bin/cli/ 

這導致光柵應用程序拋出一個錯誤日誌,表明從它的安裝目錄中未運行。 (這是第二個日誌行中的目錄)。

看起來工作目錄不是我在processBuilder.directory()調用中指定的目錄。

任何人都可以解釋發生了什麼?

+0

聽起來像你不能依賴當前工作目錄被設置(這是很常見的)。您可以向JVM詢問您的類是從哪裏加載的,並從中派生出安裝目錄。或者也許你可以使用'myCommandLine [0]'? –

+0

我修改了代碼來調用一個執行「pwd」的shell腳本。 工作目錄是正確的。 – CasaDelGato

+0

嘗試打印出'new File(m_workingDir).getAbsolutePath()'的值 –

回答

0

與應用程序供應商合作,事實證明,我現在需要在運行應用程序之前先執行「取消CFProcessPath」。

相關問題