Java Eclipse: diferença entre exportar como JAR e exportar como JAR executável

87

Qual é a diferença no eclipse entre exportar como um arquivo JAR e exportar como um arquivo JAR executável? Ambos não são executáveis? Quais são os prós / contras de cada um?

bem, na verdade
fonte

Respostas:

98

O jar executável contém um arquivo MANIFEST.MF, que define a classe principal a ser executada quando o jar é executado.

Jars não executáveis ​​são apenas bibliotecas de classes, que podem ser adicionadas ao caminho de classe para que o código seja reutilizado (ele também contém o arquivo de manifesto, mas nenhuma classe principal lá)

Bozho
fonte
Quando exportamos o arquivo apenas como um jar em vez de um jar executável, temos que especificar a classe principal e o classpath da biblioteca em manifest.mf.
MR E
20

Um jar executável é um arquivo jar que possui um arquivo Manifest incorporado que inclui a declaração "Main-Class:". A "Main-Class" deve ser definida para que o tempo de execução do java saiba qual classe chamar quando o jar for "executado". Se um jar não inclui um manifesto com a "classe principal:", ele não é considerado um "jar executável" - é apenas uma biblioteca de código Java.

Eu acho que essa é a diferença em como o Eclipse exporta o jar, mas não tenho 100% de certeza.

Veja este link para mais informações: http://www.skylit.com/javamethods/faqs/createjar.html

Andy White
fonte
17

Com o arquivo JAR padrão, você deve especificar a classe com o método principal na linha de comando ao executar o jar. Com um JAR executável, há um arquivo de manifesto que conterá essas informações para que você possa apenas digitar java -jar myRunnable.jarou simplesmente clicar duas vezes nele.

Eric-Karl
fonte
0

No meu caso, costumava exportar como um jar quando tinha todas as classes principais e todos os diretórios do caminho das bibliotecas especificados no manifest.mf. Se muitos aplicativos estiverem usando a mesma biblioteca, não será necessário exportar a biblioteca compartilhada para cada jar. Isso torna o funcionamento do jar mais rápido. Mas, muitas vezes, devido a problemas de configuração em um caminho de classe de servidor diferente, não é possível acessar a biblioteca e, nesse caso, faz sentido exportar o jar executável que torna a execução do arquivo lenta e grande.

SENHOR E
fonte