2017-05-16 1 views
2

Der Versuch, ein Fettglas mit allen Abhängigkeiten unter Verwendung des maven-assembly-Plugins zu erstellen. Habe eine Menge Dinge probiert, aber am Ende mit dem Fehler Hauptklasse nicht gefunden. Scheint als hätte ich eine Wand getroffen, war jetzt für ein paar Stunden hier.Laufendes ausführbares jar, das von maven-assembly erstellt wurde: Fehler: Hauptklasse konnte nicht gefunden oder geladen werden

pom.xml Schnipsel:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>foobar</groupId> 
    <artifactId>foobar</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <configuration> 
        <outputDirectory>/home/jars/foobar/</outputDirectory> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
        <archive> 
         <manifest> 
          <mainClass>com.foobar.Main</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies>...</dependencies> 
</project> 

Maven Befehle ausgeführt:

mvn clean compile assembly:single

mvn package assembly:single

mvn clean compile package assembly:single

Erzeugt Glas in /home/jars/foobar/foobar-1.0-SNAPSHOT-jar-with-dependencies.jar als

MANIFEST.INF in META-INF

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Built-By: user 
Created-By: Apache Maven 3.3.9 
Build-Jdk: 1.8.0_131 
Main-Class: com.foobar.Main 

Java erwartet Befehle ausgeführt:

java -jar foobar-1.0-SNAPSHOT-jar-with-dependencies.jar

java -cp foobar-1.0-SNAPSHOT-jar-with-dependencies.jar com.foobar.Main

java -jar foobar-1.0-SNAPSHOT-jar-with-dependencies.jar -cp com.foobar.Main

Alle geben den gleichen Fehler: Error: Could not find or load main class com.foobar.Main

OS: Fedora 25

java -version 
openjdk version "1.8.0_131" 
OpenJDK Runtime Environment (build 1.8.0_131-b12) 
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode 

javac -version 
javac 1.8.0_121 

mvn --version 
Apache Maven 3.3.9 (NON-CANONICAL_2016-07-01T11:53:38Z_mockbuild; 2016-07-01T17:23:38+05:30) 
Maven home: /usr/share/maven 
Java version: 1.8.0_131, vendor: Oracle Corporation 
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-1.b12.fc25.x86_64/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux", version: "4.10.13-200.fc25.x86_64", arch: "amd64", family: "unix" 

GELÖST:

Das Problem war, dass der Quellcode wurde nicht kompiliert zu werden. Konnte den Quellcode-Jar im Fettglas nicht finden. Es scheint, als ob Maven eine bestimmte Paketstruktur annimmt.

Hinzufügen der folgenden <build> das Problem gelöst:

<sourceDirectory>src/com/foobar</sourceDirectory> 
+1

Versuchen Sie, in das .jar hineinzuschauen und zu sehen, wie Maven die Dateien ausbaute? Kannst du deine Klasse sehen? Ich hatte ähnliches Problem, als ich für Spring-Boot-Anwendung baute, wo das Plug-in die Datei für Spring-Boot kompatibel verschoben hat, aber nicht mit "java -jar ..." –

+0

Was ist das Ergebnis, wenn Sie versuchen, ' Maven installieren? –

+0

@MinhKieu Das war es! Seufzer! Es scheint, als ob Maven eine bestimmte Verzeichnisstruktur annimmt. Gelöst durch Hinzufügen von ''. Wenn Sie die Frage beantworten können, werde ich sie als die richtige markieren. – user2354302

Antwort

1

Das Maven Plugin den Inhalt der JAR für Frühjahr-Boot ist neu strukturiert kompatibel, die die Kommandozeile „java -jar ...“ kann dazu führen, nicht zu richtig funktionieren. Als Benutzer user2354302 entdeckt, half das Hinzufügen von src/com/foobar.

Verwandte Themen