从 Java 在终端中执行 Linux 命令
Executing a Linux command in Terminal from Java
我目前正在 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 + "\"");
对于此事,我将不胜感激。
提前致谢
使用 Runtime.exec 通常不是一个好主意,为什么不使用 Java HTTP API 上传文件呢?
我过去很难尝试使用 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: 还要检查您是否具有执行所需任务的必要权限。
我目前正在 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 + "\"");
对于此事,我将不胜感激。
提前致谢
使用 Runtime.exec 通常不是一个好主意,为什么不使用 Java HTTP API 上传文件呢?
我过去很难尝试使用 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: 还要检查您是否具有执行所需任务的必要权限。