Sto provando a confezionare un progetto usando le librerie OptaPlanner 6.0.1 in un .jar attraverso l’artefatto di jar di IntelliJ IDEA ma invece del mio manifest.mf che contiene lo standard
Manifest-Version: 1.0 Main-Class: abcapp
il jar utilizza quello fornito in ecj-3.7.2.jar, una delle librerie di supporto di OptaPlanner:
Manifest-Version: 1.0 Build-Jdk: 1.6.0_26 Built-By: ibrandt Created-By: Apache Maven Archiver-Version: Plexus Archiver
Per questo "no main manifest attribute, in appname.jar"
, un errore "no main manifest attribute, in appname.jar"
verifica quando si tenta di eseguire l’app. Se cambio manualmente il manifest nel file .jar con il mio tutto funziona correttamente. C’è qualcosa che posso fare per risolvere questo problema?
Conservo le librerie in una directory separata / lib e sono state aggiunte alla radice del file jar come Extracted Directory, IntelliJ IDEA è v13.0.1.
Ho avuto lo stesso problema.
Assicurati che il tuo MANIFEST.MF sia in:
src/main/resources/META_INF/
NON
src/main/java/META_INF/
Aggiustare:
Come notato nel commento di @grudolf in una delle altre risposte, un modo per farlo (e l’unico che ha funzionato per me in un progetto Gradle importato) è creare un jar vuoto come segue:
Questo è sicuramente un bug in Idea. Questa risposta collegata funziona in modo affidabile quando ci sono le directory estratte. In sostanza, trovi il tuo .idea / JARNAME.xml, aggiungi aggiungi il seguente elemento in cima all’elemento
per il tuo jar. Qualsiasi elemento estratto sopra la nuova copia del file che contiene un manifest comprimerà il tuo nuovo manifest.
Se vuoi specificare la Main Class, devi aggiungere questo plugin a pom.xml:
org.apache.maven.plugins maven-jar-plugin 2.6 Form
Ho avuto un problema simile.
Il problema era nel file pom.xml.
one.jar, two.rar, other.jar
Non so per quale motivo questo codice funzioni in Eclipse, ma non in IntelliJ
Questo è corretto.
one.jar, two.rar, other.jar
Manifest.mf ha funzionato !!!
Spero che aiuti.
Esistono diversi modi per generare giare eseguibili. L’utilizzo della funzionalità GUI di IntelliJ è un buon modo. Un altro modo è usare Maven (o in modo simile a gradle, buildr, ecc.) Che è compatibile con build-server:
È più o meno copiabile con gli esempi optaplanner di costruzione di maven:
Per non avere problemi come Manifest, dovresti avere una directory chiamata “META-INF” nella directory “src”. Quindi, creala e metti un file chiamato “MANIFEST.MF” con il seguente contenuto:
Manifest-Version: 1.0 Main-Class: .Main
Non dimenticare di sostituire il nome del pacchetto contenente la class Main sopra!