मैं अपने स्टैंडअलोन एप्लिकेशन में मावेन का उपयोग कर रहा हूं, और मैं अपने जेएआर फ़ाइल में सभी निर्भरताओं को एक लाइब्रेरी फ़ोल्डर के अंदर पैकेज करना चाहता हूं, जैसा कि यहां दिए गए उत्तर में दिया गया है:
मैं मावेन का उपयोग कर निर्भरता के साथ एक निष्पादन योग्य जार कैसे बना सकता हूं?
मैं चाहता हूं कि मेरी अंतिम JAR फ़ाइल में लाइब्रेरी फ़ोल्डर है जिसमें JAR फ़ाइलों के रूप में निर्भरताएं हैं, न कि यह maven-shade-plugin
कि क्या निर्भरताएँ फ़ोल्डर के रूप में निर्भर करती हैं जैसे कि .M2 फ़ोल्डर में मावेन पदानुक्रम।
ठीक है, वास्तव में वर्तमान कॉन्फ़िगरेशन वही करता है जो मैं चाहता हूं, लेकिन मुझे एप्लिकेशन चलाते समय JAR फ़ाइलों को लोड करने में समस्या हो रही है। मैं कक्षाएं लोड नहीं कर सकता।
यहाँ मेरा विन्यास है:
<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>
प्रोजेक्ट ग्रहण से ठीक चलता है, और JAR फाइलें मेरे अंतिम JAR फ़ाइल के अंदर लाइब्रेरी फ़ोल्डर में डाल दी जाती हैं, लेकिन जब मैं लक्ष्य फ़ोल्डर से अंतिम JAR फ़ाइल चलाता हूं, तो मुझे हमेशा मिलती है 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.
मैं इस अपवाद को कैसे ठीक कर सकता हूं?
com.myapp.MainClass
को खोजा जा रहा है, नहीं com.tastycafe.MainClass
।