독립 실행 형 응용 프로그램에서 Maven을 사용하고 있으며 여기 답변 중 하나에서 언급했듯이 JAR 파일의 모든 종속성을 라이브러리 폴더 안에 패키징하고 싶습니다.
Maven을 사용하여 종속성이있는 실행 가능한 JAR을 어떻게 만들 수 있습니까?
최종 JAR 파일에 maven-shade-plugin
.m2 폴더의 Maven 계층과 같은 폴더 형태로 종속성을 넣는 것과는 달리 JAR 파일로 종속성을 포함하는 라이브러리 폴더가 있어야 합니다.
글쎄, 실제로 현재 구성은 내가 원하는 것을 수행하지만 응용 프로그램을 실행할 때 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>
프로젝트는 Eclipse에서 잘 실행되고 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
.