【发布时间】:2016-11-12 23:48:38
【问题描述】:
我尝试像这样通过java 执行 shell 命令
if (Program.isPlatformLinux())
{
exec = "/bin/bash -c xdg-open \"" + file.getAbsolutePath() + "\"";
exec2 = "xdg-open \"" + file.getAbsolutePath() + "\"";
System.out.println(exec);
}
else
{
//other code
}
Runtime.getRuntime().exec(exec);
Runtime.getRuntime().exec(exec2);
但是什么都没有发生。当我执行此代码时,它会在控制台中打印/bin/bash -c xdg-open "/home/user/Desktop/file.txt",但不会打开文件。我也试过先调用 bash 再调用xdg-open-command,但没有变化。
这里有什么问题,我该如何解决?
编辑:调用的输出如下所示:
xdg-open "/home/user/Desktop/files/einf in a- und b/allg fil/ref.txt" xdg-open:意外的参数'in'
但这对我来说似乎很奇怪 - 为什么in之前的命令分隔符甚至整个路径都设置在引号中?
【问题讨论】:
-
尝试通过将进程输出打印为shown in this question来检查是否有错误。也许您会遇到更具体的错误。
-
@BackSlash 我听从了您的建议,并将结果添加到我的原始帖子中。
-
"einf in a- und b" 这是包含空格的文件夹名称吗?
-
查看this question,了解为什么在命令包含引号时
Runtime.exec(String)会失败。
标签: java bash shell runtime xdgutils