2017-02-09 4 views
4

Vor allem: Ich bin neu zu Maven. Ich habe meine erste Maven-Anwendung gemacht und sie erfolgreich in der IDE getestet. Der Build war immer erfolgreich und alles funktionierte wie ein Zauber.Maven ausführbare Jar wirft Fehler beim Start

Jetzt möchte ich das Projekt als ausführbare jar mit den Abhängigkeiten, die eingebaut werden, exportieren, aber ich bin nicht ganz sicher, warum es nicht funktioniert.

Ich habe folgendes meine pom-Datei, wie das war, was ich auf verschiedene Antworten auf eine ähnliche Frage

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
          <mainClass>com.pwc.scfa.pensareautomatio3.Main</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
</build> 

ich die Hauptklasse für die JVM zu starten, da die IDE verstehen, dass dies angibt gefunden stellt dies nicht automatisch ein.

Ich habe das Glas im Zielverzeichnis gefunden, es in ein anderes Verzeichnis kopiert und versucht, es auszuführen.

Leider werden die folgenden Fehler geworfen:

enter image description here

enter image description here

Können Sie bitte geben Sie mir einen Hinweis, wo ich falsch könnte gegangen? Das wäre großartig. (I NetBeans verwenden, wenn das eine Hilfe ist.)

Hier ist mein Stacktrace:

C:\Users\scfa\Desktop>java -jar PensareAutomatio-1.1.jar 
Error: A JNI error has occurred, please check your installation and try again 
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/openxm 
l4j/exceptions/InvalidFormatException 
     at java.lang.Class.getDeclaredMethods0(Native Method) 
     at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
     at java.lang.Class.privateGetMethodRecursive(Unknown Source) 
     at java.lang.Class.getMethod0(Unknown Source) 
     at java.lang.Class.getMethod(Unknown Source) 
     at sun.launcher.LauncherHelper.validateMainClass(Unknown Source) 
     at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.apache.poi.openxml4j.exceptions 
.InvalidFormatException 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 7 more 

Thanks :)

+1

können Sie die JAR-Datei mit einem Archivierungswerkzeug (wie 7zip oder winrar) öffnen? Wenn ja, was könnten Sie den Inhalt davon veröffentlichen? auch versuchen, es von der Befehlszeile aus zu laufen, um den Stack-Trace zu sehen (in Windows verwenden cmd, navigieren Sie zu dem Ordner mit dem Glas und geben Sie "java -jar myjar.jar" – gybandi

Antwort

1

Wenn ich richtig bin, maven-jar-Plugin eines erstellt jar mit allen kompilierten .class-Dateien, aber ohne die Abhängigkeiten.

Ich würde empfehlen, mit Maven-Montage-Plugin und es zu dem Paket Ausführungsphase zu binden, auf diese Weise gebaut werden würde, wenn läuft mvn install

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
    <archive> 
     <manifest> 
     <mainClass>com.pwc.scfa.pensareautomatio3.Main</mainClass> 
     </manifest> 
    </archive> 
    <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
    </descriptorRefs> 
    </configuration> 
    <executions> 
    <execution> 
     <id>make-assembly</id> <!-- this is used for inheritance merges --> 
     <phase>package</phase> <!-- bind to the packaging phase --> 
     <goals> 
     <goal>single</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

Siehe this Antwort für weitere Informationen .

+1

Vielen Dank :) Das Problem war, wie Sie die fehlenden Abhängigkeiten empfohlen haben, und ich wusste nicht, wie Sie das Runnable einschließlich dieser exportieren können. –

Verwandte Themen