Problema ao executar arquivo jar no Ubuntu

Problema ao executar arquivo jar no Ubuntu

Por que um .jarscript é executado quando eu o executo java -jar myfile.jar, mas não é executado quando eu o executo como ./myfile.jar

Responder1

Quando você executa seu jar usando java -jar myfile.jarvocê está dizendo ao seu shell para executar o javacomando e passando alguns argumentos que javaentendem. No entanto, quando você o executa, ./myfile.jarvocê está solicitando ao shell que determine o interruptor para executá-lo, o que ele não consegue fazer.

O shell procura a linha shebang no início do script para saber com qual aplicativo executar o script, e é por isso que você verá scripts de shell começando com:

#!/bin/bash

Ou os scripts python começam com

#!/usr/bin/python

O que você está dizendo ao shell, basicamente, é executar o script usando o aplicativo que você encontra em /bin/bashou /usr/bin/python. No caso do seu arquivo jar, o shell não consegue encontrar o shebang, portanto não sabe como executar o código.

No passado, usei scripts wrapper para executar aplicativos Java, algo semelhante a:

#!/bin/bash

java -jar /path/to/myfile.jar

Então você só precisa tornar esse executável, usando chmode você pode executá-lo como faria com qualquer outro script de shell.

Responder2

Eu instalei o jdk usando sudo apt-get install openjdk-7-jdk e jre usando sudo apt-get install openjdk-7-jre mas ainda estava enfrentando esse problema. Achei que isso poderia ser devido ao motivo pelo qual meu sistema não conseguiu encontrar o caminho do Java. Finalmente, quando instalei o instalador Oracle jdk7 usando os comandos a seguir, consegui executar o arquivo .jar usando o comando ./myfile.jar. Usei os seguintes comandos para instalá-lo:

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get atualização

sudo apt-get install oracle-jdk7-installer

informação relacionada