tente sem /bin/sh
Exec=/usr/local/netbeans-8.0/bin/netbeans
Estou tendo problemas com o arquivo da área de trabalho do NetBeans gerado pelo script de instalação do netbeans. O arquivo em questão, como encontrado na pasta / usr / share / applications, é muito simples:
[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
O próprio aplicativo netbeans é executado perfeitamente se eu o executar a partir de um terminal usando /usr/local/netbeans-8.0/bin/netbeans
. Estou faltando alguma coisa aqui? Eu não consigo descobrir como obter a saída de erro se eu executá-lo clicando duas vezes ou a partir do lançador. Não há erros no funcionamento do terminal. Alguma idéia?
Edit: O arquivo netbeans é executável.
tente sem /bin/sh
Exec=/usr/local/netbeans-8.0/bin/netbeans
Eu descobri o problema olhando pelo syslog. Eu provavelmente deveria ter feito isso para começar, mas ainda sou um noob do Linux. Desculpe se eu perdi o tempo de ninguém!
Aparentemente, o Netbeans não estava conseguindo pegar um agente de ferramentas. Especificamente, a ferramenta de instrumentação Jayatanaag.jar. Por algum motivo, isso não causou um estado de falha ao iniciar diretamente de um terminal, mas causou falha apenas ao executar a partir do arquivo .desktop. Para corrigir esse erro, eu desinstalei e reinstalei o jayatana:
sudo apt-get purge jayatana
sudo apt-get install jayatana
Isso corrigiu o problema imediatamente.
Primeiro uma explicação, obrigado @kos
Usando uma linha Exec=
, como
Exec=/usr/local/netbeans-8.0/bin/netbeans
netbeans
é executado em sh
, porque as linhas Exec=
nos arquivos da área de trabalho são executadas como comandos em sh
, não em bash
ou mais. Então
Exec=/bin/sh -c "/usr/local/netbeans-8.0/bin/netbeans"
gera uma instância sh excessiva. Apenas
Exec=/usr/local/netbeans-8.0/bin/netbeans
executará netbeans
em sh
Se você realmente precisa, por alguns motivos, sh
, então sua propriedade Exec=
está errada.
Aqui está um exemplo com o Eclipse, um outro IDE baseado em Java
% sh "/opt/eclipse/eclipse"
/opt/eclipse/eclipse: 1: /opt/eclipse/eclipse: Syntax error: "(" unexpected
Para iniciar um comando com sh
, você precisa da opção -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.