2013-03-30 29 views
8

Sto usando Intellij IDEA 12.0.4 su MAC OS X 10.8.3 per creare un file jar. Vado su File -> Struttura progetto -> Artefatti -> + -> Jar -> Da moduli con dipendenze -> Classe principale selezionata dopo la navigazione -> Estratto selezionato nel vaso di destinazione -> Directory per META-INF viene automaticamente compilato -> OK -> Applica -> OK -> Build -> Crea Artefatti -> Creacome eseguire un file jar creato usando intellij 12

Ora Se provo a fare funzionare vaso utilizzando:

java -jar path_to_jar/jar_file 

ottengo questo errore

no main manifest attribute, in path_to_jar/jar_file 


$ java -version 
java version "1.7.0_17" 
Java(TM) SE Runtime Environment (build 1.7.0_17-b02) 
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode) 

Qualsiasi puntatori , cosa sto facendo di sbagliato?

+1

dare uno sguardo su questioni simili http: // stackoverflow.com/questions/11166633/main-class-not-found-intellij-building-a-jar e http://stackoverflow.com/questions/1082580/how-to-build-jars-from-intellij-properly. – user1929959

risposta

0

è necessario scegliere la classe "principale" per il vostro vaso in modo da renderlo eseguibile (cioè è necessario indicare nel IDEA sulla classe che contiene public static void main(String[] args)

+1

ho fatto questo: selezionato Main Class dopo aver navigato – user2213182

5

Nel mio caso, è stato perché IntelliJ era estraendo tutte le dipendenze nel jar di output, che ha finito per sovrascrivere il file /META-INF/MANIFEST.MF con qualcosa da una delle mie dipendenze. Ho dovuto aprire il barattolo e copiare nel vero MANIFEST.MF dalla posizione indicata nella proprietà "File manifest" che viene automaticamente impostata nella pagina delle risorse in Struttura progetto ".

+0

Anche se questo può funzionare sicuramente è meglio non dover aprire il JAR e modificarlo dopo averlo generato? Ho seguito le istruzioni di Felbus che lo ha risolto per me senza dover incidere il barattolo intorno a – Cookalino

17

Per risolvere questo problema, fare due cose:

mossa META-INF in src/main/risorse

poi: file-> Impostazioni modulo aperti

scelgono artefatti, rimuovere quella attuale e crearne uno nuovo, ma questa volta , invece di scegliere "estrai nel jar di destinazione", scegli "copia nella directory di output e collega via manifest"

per il percorso a META-INF, inserisci il percorso della directory risorse sopra quella che hai copiato META-INF in ..

ora crea il tuo ar tifact

im terminale, vanno a dir in cui sono stati prodotti vasi e per eseguire fare:

java-jar yourjarfile.jar

divertirsi

+0

Questo funziona per me – Rombus

+1

aprile 2017 e questo risolve ancora la soluzione per me. Ben fatto, signore –

Problemi correlati