Mais
Can't execute jar-file: "nenhum atributo manifesto principal"
Eu instalei uma aplicação, quando tento executá-la (it's um jarro executável) nada acontece. Quando eu o executo a partir da linha de comando com:
java -jar "app.jar"
Eu recebo a seguinte mensagem:
nenhum atributo manifesto principal, in "app.jar"
Normalmente, se eu mesmo tivesse criado o programa, eu teria adicionado um atributo de classe principal ao arquivo do manifesto. Mas neste caso, como o arquivo é de uma aplicação, eu não posso fazer isso. Eu também tentei extrair o frasco para ver se conseguia encontrar a classe principal, mas existem muitas classes e nenhuma delas tem a palavra "main" nele's name. Deve haver uma maneira de corrigir isso porque o programa roda bem em outros sistemas.
861
3
Primeiro, it's um pouco estranho, ver você executar
java -jar "app"
e não `java -jar app.jar'.Segundo, para tornar um frasco executável... você precisa de um frasco chamado META-INF/MANIFEST.MF
o arquivo em si deve ter (pelo menos) este revestimento:
Onde `com.mypackage.MyClass' é a classe que detém o public static void main(String[] args) ponto de entrada.
Note que há várias maneiras de fazer isso com o CLI, Maven, Formiga ou Gradle:
Para **CLI***, o seguinte comando serve: (tks @[dvvrt][1])
Para Maven, algo como o seguinte trecho deve fazer o truque. Note que esta é apenas a definição do plugin, não o pom.xml completo:
Isso deveria ter sido
java -jar app.jar
em vez dejava -jar "app"
.A opção
-jar' só funciona se o arquivo JAR for um arquivo JAR executável, o que significa que ele deve ter um arquivo manifesto com um atributo
Main-Class' nele. Veja Packaging Programs in JAR Files para aprender como criar um arquivo JAR executável.Se ele'não é um JAR executável, então você'precisará executar o programa com algo parecido:
onde
com.somepackage.SomeClass' é a classe que contém o método
main' para executar o programa. (O que essa classe é depende do programa, é's impossível de dizer a partir da informação que você've forneceu).Se o frasco está't seguindo as regras, ele's não é um frasco executável.