簡體   English   中英

從Java在終端中執行Linux命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM