Vous avez essayé de créer un gros fichier contenant toutes les dépendances à l'aide du module maven-assembly
. Essayé un tas de choses, mais se retrouver avec l'erreur de classe principale non trouvée. On dirait que j'ai frappé un mur, je suis là depuis quelques heures maintenant.Exécution d'un fichier jar exécutable créé par maven-assembly: Erreur: Impossible de trouver ou de charger la classe principale
pom.xml
extrait:
<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>
commandes Maven exécutées:
mvn clean compile assembly:single
mvn package assembly:single
mvn clean compile package assembly:single
Crée pot dans /home/jars/foobar/foobar-1.0-SNAPSHOT-jar-with-dependencies.jar
comme prévu
MANIFEST.INF
dans 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 commandes exécutées:
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
Tous renvoient la même erreur: 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"
RESOLU:
La question est que le code source n'a pas été compilé se. Impossible de trouver le pot de code source dans le gros pot. On dirait que Maven suppose une certaine structure de paquet.
Ajouter ce qui suit à <build>
résoudre le problème:
<sourceDirectory>src/com/foobar</sourceDirectory>
Essayez de regarder à l'intérieur du fichier .jar et voyez comment Maven a sécurisé les fichiers? Pouvez-vous voir votre classe? J'ai eu le même problème quand j'ai construit pour l'application Spring-boot où le plug-in a déplacé le fichier compatible pour Spring-boot mais ne peut pas être exécuté avec "java -jar ..." –
Quel est le résultat si vous essayez ' maven installer'? –
@MinhKieu C'était tout! Soupir! On dirait que Maven suppose une certaine structure de répertoire. Résolu en ajoutant ' sourceDirectory>'. Si vous pouvez répondre à la question, je la marquerai comme la bonne. –
user2354302