`

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,这样就不会报找不到类的异常了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 34.2 KB
  • 大小: 36.5 KB
  • 大小: 44.7 KB
分享到:
评论

相关推荐

    webservices客户端maven依赖

    根据提供的文件信息,我们可以了解到这是一个基于Maven构建的Web服务客户端项目。该POM(Project Object Model)文件定义了项目的元数据以及构建过程中的配置,包括项目的基本信息、构建插件配置以及所需的依赖库等...

    fastdfs-client-java-1.29-SNAPSHOT.jar

    解决 Maven 无法下载 fastdfs-client-java-1.29-SNAPSHOT 依赖,直接下载之后用maven命令存储到本地maven仓库即可。 maven命令 mvn install:install-file -DgroupId=org.csource -DartifactId=fastdfs-client-java ...

    maven 隐式依赖引起的包冲突解决办法

    6. **分析并重构代码**:如果上述方法都不能解决问题,可能需要深入分析代码,看是否能修改代码以适应不同版本的依赖,或者重构代码以减少对特定库的依赖。 解决Maven的包冲突需要耐心和细心,通过理解项目的依赖...

    maven打包出错解决办法,亲测绝对可以!

    这样,Maven会首先尝试从私服下载依赖,找不到时再从公共仓库下载。 4. **部署私有库**:使用Maven的`deploy`命令,将内部项目打包并上传至Nexus的特定仓库。通过配置`&lt;distributionManagement&gt;`标签,指定发布目标...

    Maven手工下载依赖包.pdf

    3. 搜索和配置依赖项:通过Maven中央仓库网站搜索依赖,并将其配置到pom.xml中。 4. Maven命令行操作:使用命令行运行Maven任务,实现手动下载依赖包。 5. 依赖包存放结构:掌握Maven下载的依赖包存放的位置以及如何...

    netcdfAll-5.5.4-SNAPSHOT.jar

    描述中提到的"netcdfAll-5.5.4-SNAPSHOT.jar"是一个包含所有相关组件和依赖的打包文件,很可能是一个Maven项目的一部分。Maven是Java开发中常用的一个项目管理和综合工具,它通过管理项目的构建、报告和文档,帮助...

    maven 查找可用jars

    Maven首先会在本地库查找依赖,如果找不到,会从配置的远程仓库(如中央仓库)中下载。通过`~/.m2/settings.xml`文件可以配置镜像,提高下载速度。 6. Snapshots与Releases: Maven还支持SNAPSHOT版本的管理,...

    maven常见问题及解决办法

    本文将针对几个常见的Maven问题及其解决方法进行详细解析。 #### 问题1:依赖解析失败 **错误信息示例**: ``` [ERROR] Failed to execute goal on project biz_zhuhai: Could not resolve dependencies for ...

    maven本地仓库

    这个仓库扮演着缓存的角色,当Maven构建项目时,首先会检查本地仓库中是否已经存在所需的依赖,如果存在则直接使用,若不存在,则从远程仓库下载并存入本地仓库。 **Maven仓库层级结构:** Maven仓库中的文件结构...

    maven的本地仓库jar包

    3. **缓存机制**:当Maven首次下载一个库到本地仓库后,它会被缓存起来,下次构建时Maven会首先查找本地仓库,不需要每次都连接到远程仓库。 4. **代理仓库**:如果企业内网无法直连互联网,可以设置私有的Nexus或...

    最新Maven-apache-maven-3.8.1-Repository-配置好的

    - **依赖管理**: 在POM.xml中声明项目依赖,Maven会自动解决依赖关系,从仓库下载并管理它们。 - **插件**: Maven的扩展性主要体现在插件上,如`maven-compiler-plugin`用于编译Java代码,`maven-surefire-plugin`...

    maven repository

    在Maven的配置文件`settings.xml`中,可以定义多个远程仓库的URL,以便Maven在本地找不到依赖时去这些仓库查找。此外,还可以设置镜像,将对中央仓库的请求重定向到指定的镜像服务器,以提高下载速度。 4. 依赖...

    Maven包和遇到的问题总结

    但有时可能会遇到依赖找不到或版本冲突的问题,这时需要检查pom.xml的配置和网络连接。 2. **生命周期与构建目标**: Maven的生命周期包括清理(clean)、编译(compile)、测试(test)、打包(package)、验证...

    maven使用方法

    - `system` - 系统依赖范围,依赖范围同 `provided` 但此类不经过 Maven 库解析,往往与本地的 jar 包地址绑定。 #### 五、传递性依赖 当一个项目 A 引入了一个依赖 B,而 B 又有其自身的依赖 C,则 C 被称为传递...

    Maven版本管理

    当项目引用SNAPSHOT依赖时,Maven会在构建时检查中央仓库是否有新的SNAPSHOT更新,以确保总是使用最新的代码。 8. **多模块项目**:大型项目通常由多个子模块组成,Maven的多模块项目管理允许在一个父`pom.xml`中...

    maven-3.3.9.zip

    - `PATH`: 添加`%MAVEN_HOME%\bin`(Windows)或`/usr/local/apache-maven-3.3.9/bin`(Linux/Mac)到系统路径中。 在Windows系统中,可以通过系统属性-&gt;高级系统设置-&gt;环境变量进行设置;在Linux或Mac上,可以通过...

    maven_package.zip

    当多个依赖包含相同JAR但版本不同时,Maven有优先级规则来解决冲突,一般采用“最近使用”原则。 7. **多模块项目**: 大型项目往往由多个模块组成,Maven支持多模块项目管理。每个子模块都有自己的POM,而父POM...

    maven repo

    如果找不到,它会转向远程仓库。 远程仓库可以是公开的,例如Maven Central,这是一个全球性的中央存储库,包含了大量开源项目发布的工件;也可以是私有的,比如Artifactory或Nexus,这些是企业级的Maven仓库服务器...

    maven仓库jar包

    如果找不到,它会转向远程仓库。远程仓库可以是公司的内部仓库,也可以是公开的第三方仓库,如JFrog的Artifactory或Nexus。中央仓库是最主要的远程仓库,由Sonatype维护,包含了大量的开源项目构件,它是所有Maven...

Global site tag (gtag.js) - Google Analytics