我使用Maven的在我的獨立應用程序,我要打包所有的依賴庫中的文件夾在我的JAR文件,如這裏的一個答案中提到:如何使用Maven將所有必需的JAR文件放入最終JAR文件內的庫文件夾中?
How can I create an executable JAR with dependencies using Maven?
我想我最後的JAR文件都包含依賴關係的JAR文件庫文件夾,不喜歡什麼使依賴於像在文件夾中的.m2 Maven的層級文件夾的形式maven-shade-plugin
。
嗯,其實當前的配置我想要做什麼,但我有運行應用程序時加載的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.
我怎樣才能解決這個例外?
你使用哪個命令來運行jar?大概你可能更喜歡maven exec插件? – 2012-08-01 12:05:42
與POM文件相比,異常消息是否過期?看起來正在搜索主類「com.myapp.MainClass」,而不是「com.tastycafe.MainClass」。 – 2012-08-01 12:06:04
@Duncan Jones,複製粘貼問題,我編輯了問題 – 2012-08-01 12:28:28