Saya menggunakan Maven di aplikasi mandiri saya, dan saya ingin mengemas semua dependensi dalam file JAR saya di dalam folder library, seperti yang disebutkan dalam salah satu jawaban di sini:
Bagaimana cara membuat JAR yang dapat dieksekusi dengan dependensi menggunakan Maven?
Saya ingin file JAR terakhir saya memiliki folder library yang berisi dependensi sebagai file JAR, tidak seperti maven-shade-plugin
yang menempatkan dependensi dalam bentuk folder seperti hierarki Maven di folder .m2.
Sebenarnya konfigurasi saat ini melakukan apa yang saya inginkan, tetapi saya mengalami masalah dengan memuat file JAR saat menjalankan aplikasi. Saya tidak dapat memuat kelas.
Inilah konfigurasi saya:
<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>
Proyek ini berjalan dengan baik dari Eclipse, dan file JAR dimasukkan ke dalam folder perpustakaan di dalam file JAR terakhir saya seperti yang saya inginkan, tetapi ketika menjalankan file JAR terakhir dari folder target saya selalu mendapatkan 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.
Bagaimana cara memperbaiki pengecualian ini?
com.myapp.MainClass
sedang dicari, bukan com.tastycafe.MainClass
.