Netbeans 桌面快捷方式文件在 Unity 启动器中不起作用,Exec 命令在术语中起作用

Netbeans 桌面快捷方式文件在 Unity 启动器中不起作用,Exec 命令在术语中起作用

我一直对 Netbeans 安装脚本生成的 Netbeans 桌面文件感到困惑。有问题的文件位于 /usr/share/applications 文件夹中,非常简单:

[Desktop Entry]
Encoding=UTF-8
Name=NetBeans IDE 8.0
Comment=The Smarter Way to Code
Exec=/bin/sh "/usr/local/netbeans-8.0/bin/netbeans"
Icon=/usr/local/netbeans-8.0/nb/netbeans.png
Categories=Application;Development;Java;IDE
Version=1.0
Type=Application
Terminal=0

如果我使用 从一个终端运行 Netbeans 应用程序,它本身可以完美运行/usr/local/netbeans-8.0/bin/netbeans。我是不是漏掉了什么?如果我通过双击或从启动器运行它,我不知道如何获取错误输出。终端运行时没有错误。有什么想法吗?

编辑:Netbeans 文件是可执行的。

答案1

尝试不用 /bin/sh

Exec=/usr/local/netbeans-8.0/bin/netbeans

答案2

我通过查看系统日志找到了问题所在。我可能一开始就应该这么做,但我还是个 Linux 菜鸟。如果我浪费了大家的时间,我很抱歉!

显然,Netbeans 无法获取工具代理。具体来说,就是检测工具 Jayatanaag.jar。出于某种原因,这在直接从终端启动时不会导致失败状态,但仅在从 .desktop 文件运行时才会导致失败。为了修复此错误,我卸载并重新安装了 jayatana:

sudo apt-get purge jayatana
sudo apt-get install jayatana

这立即解决了该问题。

答案3

首先解释一下,谢谢@kos

通过使用Exec=如下的行

Exec=/usr/local/netbeans-8.0/bin/netbeans

netbeans已在 中执行sh,因为Exec=桌面文件中的行是作为 中的命令执行的sh,而不是在bash或其他中。因此

Exec=/bin/sh -c "/usr/local/netbeans-8.0/bin/netbeans" 

生成过多的 sh 实例。只是

Exec=/usr/local/netbeans-8.0/bin/netbeans

将会netbeans运行sh


如果由于某些原因您确实需要sh,那么您的Exec=财产就是错误的。

以下是 Eclipse(另一个基于 Java 的 IDE)的示例

% sh "/opt/eclipse/eclipse"
/opt/eclipse/eclipse: 1: /opt/eclipse/eclipse: Syntax error: "(" unexpected

要启动命令,sh您需要使用-c开关:

Exec=/bin/sh -c "/usr/local/netbeans-8.0/bin/netbeans"

-c string
    If the -c option is present, then commands are read fromstring.
    If there are arguments after the string, they are assigned to the positional
    parameters, starting with $0.

答案4

右键单击桌面,创建一个启动器,然后添加:“/usr/share/applications/netbeans-8.2.desktop”作为命令,并为其指定一个有意义的标题。第一次运行时,您会收到不受信任的应用程序警告;选择标记为可执行文件。

祝您编码愉快。

相关内容