Tôi đang sử dụng Maven trong ứng dụng độc lập của mình và tôi muốn đóng gói tất cả các phụ thuộc trong tệp JAR của mình bên trong một thư mục thư viện, như đã đề cập trong một trong các câu trả lời ở đây:
Làm cách nào tôi có thể tạo một JAR thực thi với các phụ thuộc bằng Maven?
Tôi muốn tệp JAR cuối cùng của mình có một thư mục thư viện chứa các phần phụ thuộc dưới dạng tệp JAR, không giống như những gì maven-shade-plugin
đặt các phần phụ thuộc ở dạng thư mục như hệ thống phân cấp Maven trong thư mục .m2.
Thực sự thì cấu hình hiện tại làm được những gì tôi muốn, nhưng tôi đang gặp sự cố khi tải các tệp JAR khi chạy ứng dụng. Tôi không thể tải các lớp học.
Đây là cấu hình của tôi:
<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>
Dự án chạy tốt từ Eclipse và các tệp JAR được đặt trong thư mục thư viện bên trong tệp JAR cuối cùng của tôi như tôi muốn, nhưng khi chạy tệp JAR cuối cùng từ thư mục đích, tôi luôn nhận được 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.
Làm cách nào để khắc phục ngoại lệ này?
com.myapp.MainClass
đang được tìm kiếm, không phải com.tastycafe.MainClass
.