使用NoClassDefFoundError导入外部JAR-dependencies



我必须在我的项目中使用另一个团队作为.jar文件提供的库。但是,当我使用这个库运行代码时,我会得到NoClassDefFoundError。我已经做了一些调查,我知道如果外部团队在类路径(例如lib文件夹(上创建具有所有所需依赖项的jar,这是可以避免的。所以我的理解是,然后我可以导入提到的库,所有需要的子jar都将在文件夹lib中。问题是:我的想法正确吗?我应该要求另一个团队为lib提供所有的子jar依赖项吗?在不提供内部所有依赖项的jar的情况下,有没有其他解决方案可以避免这种错误?

如果你可以用maven编译你的项目,那么必须有所有需要的jar文件。如果你只选择你的";罐子";文件并执行它,它将失败,因为您必须在类路径中包含依赖项。

另一种选择是构建包含所有依赖项的jar文件

例如,使用maven汇编插件:

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<mainClass>com.path.to.your.MainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>${project.artifactId}-${project.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>        
</configuration>
</plugin>

最新更新