[英]Terminal command fails in Runtime.exec()
不确定这是否最适合Stackoverflow或Superuser,因为这几乎适用于两者...
我正在运行Lubuntu,我想创建一个类似于Windows的“开始菜单”搜索LXDE桌面菜单。 与Windows一样,找到项目后,我希望能够启动它。
LXDE菜单系统可处理.desktop文件,因此我的代码使用Runtime.exec()
执行以下命令来启动程序:
gtk-launch <.desktop filename without extension>
这在99%的时间内运行良好。 不幸的是,我无法弄清楚为什么其他1%的人拒绝发射。 这些应用程序之一是TeamViewer。 现在出现了一个奇怪的部分:当我在终端中运行gtk-launch teamviewer-teamviewer10
命令时,它很好用,但是如果我通过Runtime.exec()
运行相同的命令,它不会启动,但不会给出我也有任何错误消息。
这是我的代码:
Process p = Runtime.getRuntime().exec(new String[] { "gtk-launch", "teamviewer-teamviewer10" });
p.waitFor();
我需要修改gtk-launch
命令还是我的代码有问题? (注意:几乎所有其他程序都可以正常启动。)
解决方法是,我决定从.desktop文件中提取Exec命令,并通过bash运行它。
String command = getExecCommandFromDesktopFile().replaceAll("\\\\ ", " ");
Runtime.getRuntime().exec(new String[] { "/bin/bash", "-c", command });
这似乎在所有条件下都有效。 我仍然没有弄清楚为什么gtk-launch
不适用于所有情况,但是对我来说,这种解决方法就可以了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.