我正在创建一个具有依赖关系的罐子。这是我的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