解决mvn打包后运行jar包报错,Class not fund
## mvn打包项目后生成jar包,放到服务器上运行jar包报错:Class not not fund,其中一个依赖的jar包找不到。但是本地运行不会报错。找到jar包解压发现里面没有依赖文件。
在网上找了好多办法都没能改好,最后参考了这位兄弟的博客,原因是mvn没有把依赖的包打包进去。
要给mvn添加一个插件,把依赖文件打包到jar包里面。maven-assembly-plugin地址在这里,然后配置一下。配置如下:
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>//后缀
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase> <!-- 在package阶段打包 -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
[...]
</project>
这样打包出来的文件会带有一个原来的jar包和一个带有jar-with-dependencies后缀的jar包,这个包就是有依赖文件的包。然后运行就不会报错了。
<phase>package</phase>
这里配置的事在什么阶段把依赖包打进去。
如果不设置需要手动调用
maven-assembly