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()調用中指定的目錄。
任何人都可以解釋發生了什麼?
聽起來像你不能依賴當前工作目錄被設置(這是很常見的)。您可以向JVM詢問您的類是從哪裏加載的,並從中派生出安裝目錄。或者也許你可以使用'myCommandLine [0]'? –
我修改了代碼來調用一個執行「pwd」的shell腳本。 工作目錄是正確的。 – CasaDelGato
嘗試打印出'new File(m_workingDir).getAbsolutePath()'的值 –