J'ai eu des problèmes avec le fichier de bureau Netbeans généré par le script d'installation Netbeans. Le fichier en question, situé dans le dossier/usr/share/applications, est très simple:
[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
L'application Netbeans elle-même fonctionne parfaitement si je l'exécute depuis un terminal utilisant /usr/local/netbeans-8.0/bin/netbeans
. Est-ce que j'ai râté quelque chose? Je ne peux pas comprendre comment obtenir le résultat d'erreur si je l'exécute en double-cliquant sur ou à partir du programme de lancement. Il n'y a pas d'erreur sur le terminal. Des idées?
Edit: Le fichier netbeans est exécutable.
essayer sans /bin/sh
Exec=/usr/local/netbeans-8.0/bin/netbeans
J'ai compris le problème en consultant syslog. J'aurais probablement dû faire cela au début, mais je suis toujours un noob Linux. Désolé si j'ai perdu le temps de quelqu'un!
Apparemment, Netbeans n’avait pas réussi à trouver un agent d’outil. Plus précisément, l'outil d'instrumentation Jayatanaag.jar. Pour une raison quelconque, cela n'a pas provoqué d'état d'échec lors du démarrage direct depuis un terminal, mais a échoué uniquement lors de l'exécution à partir du fichier .desktop. Pour corriger cette erreur, j'ai désinstallé et réinstallé jayatana:
Sudo apt-get purge jayatana
Sudo apt-get install jayatana
Cela a résolu le problème immédiatement.
D'abord une explication, merci @ kos
En utilisant une ligne Exec=
telle que
Exec=/usr/local/netbeans-8.0/bin/netbeans
netbeans
est déjà exécuté dans sh
, car les lignes Exec=
dans les fichiers du bureau sont exécutées sous forme de commandes dans sh
et non dans bash
. Alors
Exec=/bin/sh -c "/usr/local/netbeans-8.0/bin/netbeans"
engendre une instance de sh excessive. Juste
Exec=/usr/local/netbeans-8.0/bin/netbeans
va exécuter netbeans
dans sh
Si vous avez vraiment besoin pour certaines raisons sh
, alors votre propriété Exec=
est incorrecte.
Voici un exemple avec Eclipse, un autre IDE basé sur Java
% sh "/opt/Eclipse/eclipse"
/opt/Eclipse/eclipse: 1: /opt/Eclipse/eclipse: Syntax error: "(" unexpected
Pour lancer une commande avec sh
, vous devez utiliser le commutateur -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.