我正在創建一個具有依賴關係的罐子。這是我的POM中的相關部分超級罐子中的java.lang.NoClassDefFoundError
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>${project.basedir}</directory>
<includes>
<include>lib/*.jar</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>path.to.main.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
我可以使用mvn clean install
來構建罐子。但是當我運行它
java -jar myProject-0.0.1-SNAPSHOT-jar-with-dependencies.jar
,我得到一個java.lang.NoClassDefFoundError
在一個類來自lib文件夾中的jar。
注意,我必須包括這瓶由
<resource>
<directory>${project.basedir}</directory>
<includes>
<include>lib/*.jar</include>
</includes>
</resource>
那麼,爲什麼我收到錯誤?我究竟做錯了什麼?另外,當我解壓縮的jar,我看到lib
文件夾和內的jar。那麼爲什麼不能找到myProject-0.0.1-SNAPSHOT-jar-with-dependencies.jar
?
更新
我加入
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
和mvn clean install
我看到這個控制檯
[INFO]複製my3rdParty.jar到路徑/到/項目/目標/ lib目錄上/biomedical-my3rdParty-0.0.1.jar
假設它位於jar的根文件夾中,lib文件夾不是類路徑的一部分。 – f1sh
但是當我爆炸的罐子,我可以看到lib文件夾 – AbtPst
加上我有'。 manifestEntries>'這不應該包含根路徑下的所有內容作爲類路徑嗎? –
AbtPst