O arquivo de atalho da área de trabalho do NetBeans não está funcionando no iniciador do Unity, o comando Exec funciona a termo

2

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.

    
por Aargonian 27.08.2015 / 03:10

3 respostas

1

tente sem /bin/sh

Exec=/usr/local/netbeans-8.0/bin/netbeans
    
por pl_rock 27.08.2015 / 03:41
1

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.

    
por Aargonian 27.08.2015 / 03:46
1

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.
    
por A.B. 27.08.2015 / 06:56