J'utilise Maven dans mon application autonome et je souhaite empaqueter toutes les dépendances de mon fichier JAR dans un dossier de bibliothèque, comme mentionné dans l'une des réponses ici:
Comment puis-je créer un JAR exécutable avec des dépendances à l'aide de Maven?
Je veux que mon fichier JAR final ait un dossier de bibliothèque qui contient les dépendances en tant que fichiers JAR, pas comme ce maven-shade-plugin
qui place les dépendances sous la forme de dossiers comme la hiérarchie Maven dans le dossier .m2.
Eh bien, en fait, la configuration actuelle fait ce que je veux, mais j'ai un problème avec le chargement des fichiers JAR lors de l'exécution de l'application. Je ne peux pas charger les classes.
Voici ma configuration:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/classes/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.myapp.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>sources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
Le projet fonctionne correctement à partir d'Eclipse et les fichiers JAR sont placés dans le dossier de la bibliothèque à l'intérieur de mon fichier JAR final comme je le souhaite, mais lors de l'exécution du fichier JAR final à partir du dossier cible, j'obtiens toujours ClassNotFoundException
:
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
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)
Could not find the main class: com.myapp.MainClass. Program will exit.
Comment puis-je corriger cette exception?
com.myapp.MainClass
soit recherchée, non com.tastycafe.MainClass
.