2013-11-25 115 views
0

我想將各種xls文件轉換爲csv。當我在終端執行以下命令它工作正常Java運行時exec

libreoffice --headless --convert-to csv --outdir 
/Data/edennis/ /Data/edennis/2013-10/*.xls 

但是,當我嘗試使用運行時exec它不會。

研究我做:

  1. 根據這一線索Java Runtime exec() behavior不能執行系統,如回聲命令,但LibreOffice的不是一個系統命令,是不是一個可執行程序?
  2. Java runtime exec這個線程推薦使用processBuilder,但不知道這是我需要做什麼在我的情況。
  3. 按照Java Doc

EXEC: 與 指定環境的獨立過程執行指定的字符串的命令。

+0

是否有任何錯誤想與我們分享? –

+0

你怎麼稱呼它?也許你必須給可執行文件的完整路徑? – Plux

+0

@ piet.t沒有錯誤,它沒有打破它貫穿,但它沒有執行.. –

回答

3

首先,Runtime.exec不應該能夠運行/ bin/echo(如果可用)。

二,是的,使用ProcessBuilder。

第三,您的問題源自對文件模式使用shell語法,如*.xls。 Runtime.exec調用您指定的程序,而不是用於文件名擴展的shell。如果您需要進行文件名擴展,請運行如下的shell:

"sh -c libreoffice --blabla *.xls" 
+0

它工作的感謝!我不得不使用一個字符串數組,但其他工作正常。 –