从Java在Terminal中执行Linux命令

时间:2015-06-02 14:51:15

标签: java eclipse ubuntu terminal virtuoso

我目前正在使用Ubuntu终端中名为“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 + "\"");

我很感激有关此事的任何帮助。

提前致谢

2 个答案:

答案 0 :(得分:3)

我过去很难尝试使用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行是可选的,用于调试目的。我确信它可以直接打印到控制台,但尚未检查它。一旦我找到更多,我会更新我的答案。

您可以查看文档页面here

PS:同时检查您是否具备执行所需任务所需的权限。

答案 1 :(得分:0)

使用Runtime.exec通常是一个坏主意,为什么不使用Java HTTP API上传文件?