Como posso tornar um arquivo .jar executável?

11

Estou tentando executar um aplicativo jar no Ubuntu, então instalei o OpenJDK Java 7 Runtime, mas quando abro esse aplicativo, recebi esta mensagem:

O arquivo '/home/aimad/Programms/jMerise/JMerise.jar' não está marcado como executável. Se isso foi baixado ou copiado de uma fonte não confiável, pode ser perigoso executar. Para mais detalhes, leia sobre o bit executável.

Aimad Majdou
fonte

Respostas:

17

Você sempre pode executar um arquivo jar fazendo isso java -jar JMerise.jar.

No entanto, para tornar o próprio arquivo jar executável, você precisa definir o bit executável, como sugere a mensagem. chmod +x /home/aimad/Programms/jMerise/JMerise.jarvai conseguir isso.

Depois disso, você pode fazer ./JMerise.jarpara executá-lo.

man chmod fornecerá informações sobre como o chmod funciona.

Veja também: https://wiki.ubuntu.com/Security/ExecutableBit

Gary
fonte
7

Clique com o botão direito do mouse no arquivo, clique em propriedades, vá para a guia Permissões e marque a caixa que diz "Permitir a execução deste arquivo como um programa".

insira a descrição da imagem aqui

RolandiXor
fonte
E se eu não conseguir marcar a caixa acima para "permitir a execução de arquivo como um programa"? Eu verifico, mas um momento depois ele automaticamente é desmarcado!
user961627
@ user961627 Você provavelmente tem o arquivo .jar armazenado em uma partição que não suporta o bit executável. Consulte Não é possível tornar um arquivo executável para obter mais detalhes.
precisa saber é
4

Primeiro, você precisará garantir um ambiente de tempo de execução Java adequado em seu sistema. O Ubuntu possui o openjdk no repositório oficial, que é 99,99% combatível com o Oracle Java, para instalá-lo, digite:

sudo apt-get install openjdk-7-jre

Em seguida, crie um arquivo chamado java-jar-launcher.desktopem ~/.local/share/applicationse colocar o seguinte conteúdo nele:

[Desktop Entry]
Type=Application
Name=Java Application Launcher
Icon=java
Exec=/usr/bin/java -jar %U
Categories=Application;Java
Terminal=False

Em seguida, adicione a seguinte linha em ~/.local/share/applications/mimeapps.list:

application/x-java-archive=java-jar-launcher.desktop;

Agora você deve ser capaz de clicar duas vezes nos arquivos jar para iniciá-los; se nada acontecer, clique com o botão direito do mouse em um arquivo jar, selecione propriedades e vá para a aba "Abrir com" e você verá "Java Application Launcher". .

Esse método é preferível (IMHO), pois dessa forma você não concede permissões de execução aos arquivos jar que podem ser potencialmente perigosos. Esse método funcionará apenas em um ambiente gráfico e precisa que o usuário dê um clique duplo no arquivo manualmente.

tusharkant15
fonte
2

Desde que você executa seu aplicativo jar java -jar application.jar, isso significa que o java está no seu caminho. Você precisa de duas coisas simples: 1) adicione um intérprete (o que aparentemente é #!java -jar) na primeira linha do seu arquivo jar, exatamente como você faz com seus scripts de shell: echo '#!java -jar' > app.jar cat application.jar >> app.jar mv app.jar application.jar

Se você selecionar o conteúdo do seu arquivo jar, verá que ele começa com ex: #!java -jar PK ^lN BOOT-INF/PK ..... ..... 2) add attribute execute by chmod +x application.jar Agora você pode "executá-lo" via ./application.jar.

gość
fonte
0

Se a execução de um arquivo .jar a partir da linha de comando funcionar ( java -jar myFile.jar), mas clicar duas vezes na GUI, não, e se for sudo chmod +x myFile.jarbem-sucedida, mas você ainda não poderá abrir com um clique duplo, e se clicar com o botão direito do mouse em .jar arquivo> Propriedades> Permissões> "Permitir a execução de arquivo como programa" não funciona (ou seja, a caixa de seleção volta logo após clicar nele), provavelmente o arquivo .jar está em um sistema de arquivos NTFS, que não permite permissões de execução em por arquivo. (Você pode ter esse problema se inicializar duas vezes, por exemplo, e tiver uma partição NTFS compartilhada entre o Ubuntu e o Windows).

Criar um iniciador (como @ tusharkant15 descreve) funcionará porque nos bastidores você está executando /usr/bin/java, não no arquivo .jar em si. Mover o arquivo .jar para outro sistema de arquivos que não seja NTFS também funcionará.

drammock
fonte