问题描述
maven打包后运行提示java.lang.ClassNotFoundException: XXX
使用maven打包部分配置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.xxx.xxMain</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
打包后,运行jar包后,提示下图问题
问题根因分析
对运行的jar解压查看MANIFEST.MF描述问题,发现快照版本在MANIFEST.MF有-xxx时间版本号。因此导致运行jar包时找不到对应的依赖
解决方案
进行maven-jar-plugin打包配置修改,增加useUniqueVersions参数,进行打包时,打包时候写到MANIFEST.MF内容为xxx-SNAPSHOT.jar。
配置如下
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.xxx.xxMain</mainClass>
<useUniqueVersions>false</useUniqueVersions>
</manifest>
</archive>
</configuration>
</plugin>
欢迎扫描下图关注公众号 IT李哥,公众号经常推送一些优质的技术文章