不确定这是否适用于Stackoverflow或超级用户,因为它几乎适用于...
我正在运行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
命令或我的代码有问题? (注意:几乎所有其他程序都可以正常启动。)
答案 0 :(得分:0)
作为一种解决方法,我决定从.desktop文件中提取 Exec 命令,然后通过bash运行它。
String command = getExecCommandFromDesktopFile().replaceAll("\\\\ ", " ");
Runtime.getRuntime().exec(new String[] { "/bin/bash", "-c", command });
这似乎在所有条件下都有效。我仍然没有弄清楚为什么gtk-launch
不适用于所有情况,但对我来说,这种解决方法会很好。