[英]Difference when executing linux command from terminal and java runtime process
[英]Executing a Linux command in Terminal from Java
我目前在Ubuntu的Terminal中使用名為“ curl”的命令,將.RDF文件上傳到Virtuoso RDF商店。
curl -T FILE URL -u USER:PASSWORD
我想使這些過程自動化,以便在eclipse中創建Java函數。 該代碼不起作用。
String[] command = {"curl -T", FILENAME, URL, "-u", credentials.USERNAME+":"+credentials.PASSWORD};
Runtime.getRuntime().exec(command)
我也嘗試過這個。 xterm出現,但是它顯示此錯誤(即使文件位於函數的路徑中):
*"/usr/bin/xterm. Can't execvp "curl" no such a directory or file"*
Runtime.getRuntime().exec("/usr/bin/xterm -e \"curl -T " + FILENAME
+ " " + URL + "-u " + credentials.USERNAME
+ ":" + credentials.PASSWORD + "\"");
我將不勝感激。
提前致謝
過去,我很難嘗試使用Runtime.exec()
運行命令。 無論如何,我已經轉向使用ProcessBuilder
,如下所示:
ProcessBuilder pbuilder = new ProcessBuilder("bash", "-c", <<your command as string>>);
File err = new File("err.txt");
try {
pbuilder.redirectError(err);
Process p = pbuilder.start();
p.waitFor();
} catch (Exception e)
{
//handle exceptions if any.
}
stderr行是可選的,用於調試目的。 我確信它可以直接打印到控制台,但尚未對其進行檢查。 找到更多信息后,將更新我的答案。
您可以在此處查看文檔頁面。
PS:還要檢查您是否具有執行所需任務所需的權限。
使用Runtime.exec通常不是一個好主意,為什么不使用Java HTTP API上傳文件呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.