Estou tentando empacotar um projeto usando as bibliotecas do OptaPlanner 6.0.1 em um .jar por meio do artefato jar do IntelliJ IDEA, mas em vez do meu manifest.mf contendo o padrão
Manifest-Version: 1.0
Main-Class: a.b.c.app
o jar usa aquele fornecido em ecj-3.7.2.jar, uma das bibliotecas de suporte do OptaPlanner:
Manifest-Version: 1.0
Build-Jdk: 1.6.0_26
Built-By: ibrandt
Created-By: Apache Maven
Archiver-Version: Plexus Archiver
Por isso, "no main manifest attribute, in appname.jar"
ocorre um erro ao tentar executar o aplicativo. Se eu substituir manualmente o manifesto no arquivo .jar pelo meu, tudo funcionará corretamente. Posso fazer alguma coisa para consertar isso?
Eu mantenho as bibliotecas em um diretório / lib separado e elas foram adicionadas à raiz do artefato jar como diretório extraído, IntelliJ IDEA é v13.0.1.
java
intellij-idea
optaplanner
rancor
fonte
fonte
Respostas:
Eu tive o mesmo problema.
Certifique-se de que seu MANIFEST.MF esteja em:
NÃO
fonte
Consertar:
fonte
Conforme observado no comentário de @grudolf em uma das outras respostas, uma maneira de fazer isso (e a única que funcionou para mim em um projeto importado do Gradle) é criar um frasco vazio da seguinte maneira:
ATUALIZAR:
Esse é definitivamente um bug do Idea. Essa resposta vinculada funciona de maneira confiável quando há diretórios extraídos. Em essência, você encontra seu .idea / JARNAME.xml, adicione o seguinte elemento ao topo do
<root>
elemento para seu jar. Quaisquer elementos extraídos acima de sua nova cópia de arquivo que contenham um manifesto afetarão seu novo manifesto.fonte
Se você deseja especificar a classe principal, você deve adicionar este plugin a pom.xml:
fonte
Eu tive um problema parecido.
O problema estava no arquivo pom.xml.
Não sei por que razão este código funciona no eclipse, mas não no IntelliJ
Isso está correto.
Manifest.mf funcionou !!!
Eu espero que isso ajude.
fonte
Existem várias maneiras de gerar jars executáveis. Usar o recurso GUI do IntelliJ é uma boa maneira. Outra maneira é usar o Maven (ou similarmente no gradle, buildr, etc), que é amigável ao servidor de compilação:
É mais ou menos copiável e colável da compilação do maven de exemplos do optaplanner:
fonte
Para não ter problemas como o Manifest, você deve ter um diretório chamado "META-INF" no diretório "src". Portanto, crie-o e coloque nele um arquivo chamado "MANIFEST.MF" com o seguinte conteúdo:
Não se esqueça de substituir o nome do pacote que contém a classe principal acima!
fonte