Bağımsız uygulamamda Maven kullanıyorum ve JAR dosyamdaki tüm bağımlılıkları, buradaki cevaplardan birinde belirtildiği gibi bir kütüphane klasöründe paketlemek istiyorum:
Maven kullanarak bağımlılıkları olan çalıştırılabilir bir JAR'ı nasıl oluşturabilirim?
Son JAR maven-shade-plugin
dosyamın, bağımlılıkları .m2 klasörüne Maven hiyerarşisi gibi klasörler biçiminde koyduğu gibi değil, JAR dosyaları olarak bağımlılıkları içeren bir kitaplık klasörüne sahip olmasını istiyorum.
Aslında mevcut yapılandırma istediğimi yapıyor, ancak uygulamayı çalıştırırken JAR dosyalarını yüklemeyle ilgili bir sorun yaşıyorum. Dersleri yükleyemiyorum.
Yapılandırmam şöyle:
<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>
Proje Eclipse'den sorunsuz çalışıyor ve JAR dosyaları istediğim gibi son JAR dosyamın içindeki kitaplık klasörüne yerleştiriliyor, ancak son JAR dosyasını hedef klasörden çalıştırırken her zaman şunu elde ediyorum 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.
Bu istisnayı nasıl düzeltebilirim?