繁体   English   中英

终端命令在Runtime.exec()中失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM