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>
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 ..." –
Was ist das Ergebnis, wenn Sie versuchen, ' Maven installieren? –
@MinhKieu Das war es! Seufzer! Es scheint, als ob Maven eine bestimmte Verzeichnisstruktur annimmt. Gelöst durch Hinzufügen von ' sourceDirectory>'. Wenn Sie die Frage beantworten können, werde ich sie als die richtige markieren. –
user2354302