it-swarm.com.de

Die Netbeans-Desktop-Verknüpfungsdatei funktioniert im Unity-Launcher nicht. Der Befehl Exec funktioniert termingerecht

Ich habe Probleme mit der Netbeans-Desktopdatei, die vom Netbeans-Installationsskript generiert wurde. Die betreffende Datei im Ordner/usr/share/applications ist sehr einfach:

[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

Die Netbeans-Anwendung selbst läuft einwandfrei, wenn ich sie von einem Terminal aus mit /usr/local/netbeans-8.0/bin/netbeans. Vermisse ich hier etwas? Ich kann nicht herausfinden, wie ich die Fehlerausgabe erhalte, wenn ich sie per Doppelklick oder über den Launcher ausführe. Es liegen keine Fehler im Terminallauf vor. Irgendwelche Ideen?

Edit: Die NetBeans-Datei ist ausführbar.

2
Aargonian

versuche es ohne /bin/sh

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

Ich habe das Problem durch Durchsuchen von Syslog herausgefunden. Ich hätte das wahrscheinlich von Anfang an tun sollen, aber ich bin immer noch ein Linux-Neuling. Tut mir leid, wenn ich jemandes Zeit verschwendet habe!

Anscheinend konnte Netbeans keinen Tool-Agenten abholen. Insbesondere das Instrumentierungstool Jayatanaag.jar. Aus irgendeinem Grund verursachte dies beim Starten direkt von einem Terminal aus keinen Fehler, sondern nur beim Ausführen aus der .desktop-Datei. Um diesen Fehler zu beheben, habe ich jayatana deinstalliert und erneut installiert:

Sudo apt-get purge jayatana
Sudo apt-get install jayatana

Dadurch wurde das Problem sofort behoben.

1
Aargonian

Zuerst eine Erklärung, danke @kos

Mit einem Exec= Zeile wie

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

netbeans wird bereits in sh ausgeführt, da der Exec= Zeilen in Desktop-Dateien werden als Befehle in sh ausgeführt, nicht in bash oder sonst. So

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

erzeugt eine übermäßige sh-Instanz. Gerade

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

wird netbeans in sh ausführen


Wenn Sie wirklich aus irgendeinem Grund sh brauchen, dann ist Ihr Exec= Eigenschaft ist falsch.

Hier ist ein Beispiel mit Eclipse, einer anderen Java - basierten IDE

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

Um einen Befehl mit sh zu starten, benötigen Sie das -c Schalter:

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.
1
A.B.