java - 从 Java 在终端中执行 Linux 命令

标签 java eclipse ubuntu terminal virtuoso

我目前在 Ubuntu 的终端中使用名为“curl”的命令,请将我的 .RDF 文件上传到 Virtuoso RDF Store。

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

您可以查看文档页面here .

PS:另请检查您是否拥有执行所需任务所需的权限。

关于java - 从 Java 在终端中执行 Linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30599471/

相关文章:

Java Applet - For 循环递减组件堆栈

java - xml的xpath获取节点信息

Java - switch case,多个case调用同一个函数

c++ - 如何在 C++ ubuntu 的 eclipse 中获取 Xlib 代码

node.js - 在 Ubuntu 20.04 LTS 上安装 NVM?

java - Spring 是否有针对 mongoDB 的 @MappedSuperclass 等效注释?

java - Eclipse 调试器似乎无缘无故地退出了,以前有人处理过这个问题吗?

eclipse - Tomcat Docker 容器 : host webapp directory mounted as container webapp directory

c++ - 使用 DHCP 获取 IP 地址、网关、掩码和广播信息

ubuntu - 如何在 Ubuntu 14.04 上安装 MarkLogic 8?