maven的SNAPSHOT依赖,找不到类解决方法

 

现象:

在maven的pom.xml依赖配置里加了一个SNAPSHOT版本的依赖:

<dependency>
			<groupId>com.yame.ecpark</groupId>
			<artifactId>ecpark-cache-driver</artifactId>
			<version>1.6.3-SNAPSHOT</version>
		</dependency>

 程序运行到相关代码的时候,报了一个找不到类的异常:


 

这个Client类明明就在ecpark-cache-driver-1.6.3-SNAPSHOT.jar里面,并且打包好的lib文件夹里,也存在该

jar包:


 

为什么还报找不到类的异常呢??

 

 

 

 

想了好久,幸得高人同事指点,反编译maven打包后的jar文件,看看里面jar文件的依赖路径:


 茅塞顿开!!!!

 

这里,Class-Path: ./ lib/ecpark-cache-driver-1.6.3-20180412.072035-2.jar lib,写得很清楚,依赖的ecpark-cache-driver版本带有时间日期版本,但lib包里的,只有一个ecpark-cache-driver-1.6.3-SNAPSHOT.jar,都不是同一个文件,所以就怪不得找不到Client类了。

知道问题原因之后,就好办了。

在maven打包时候,指定<useUniqueVersions>false</useUniqueVersions> ,如:

 

<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<archive>
						<manifest>
							<addClasspath>true</addClasspath>
							<classpathPrefix>lib/</classpathPrefix>
							<mainClass>com.yame.Application</mainClass>
							<useUniqueVersions>false</useUniqueVersions>  
						</manifest>
						<manifestEntries>
							<Class-Path>./</Class-Path>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>

 

这样,在打包的时候,

MANIFEST.MF中的Class-Path: lib/ecpark-cache-driver-1.6.3-20180412.072035-2.jar

转化成Class-Path:/lib/ecpark-cache-driver-1.6.3-SNAPSHOT.jar

 同时lib文件夹下面也存在ecpark-cache-driver-1.6.3-SNAPSHOT.jar,这样就不会报找不到类的异常了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值