现象:
在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,这样就不会报找不到类的异常了。
相关推荐
将该压缩包解压,其中的9个文件就和maven仓库中某个依赖的9个文件类型完全一致,然后将其放到自己maven的本地仓库中,具体路径如下:“maven本地仓库位置\com\infiniteautomation\modbus4j”,然后在自己的maven项目...
Maven-test:运行所的测试类,取决于位置,必须放到src/test下面;在运行的(install)跳过,运行的时候会执行一遍测试类(花的时间长) 4.创建一个标准的ssm项目 项目介绍: Ssm:项目的顶级目录 ssm_common:jar包,放的是...
Maven权威指南 Authors Tim O'Brien (Sonatype, Inc.) , John Casey (Sonatype, Inc.) , Brian Fox (Sonatype, Inc.) , Bruce Snyder () , Jason Van Zyl (Sonatype, Inc.) , Juven Xu () Abstract Maven权威指南...
赠送Maven依赖信息文件:aliyun-java-sdk-dysmsapi-1.1.0.pom; 包含翻译后的API文档:aliyun-java-sdk-dysmsapi-1.1.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.aliyun:aliyun-java-sdk-dysmsapi:1.1.0...
这并不总是完全可能的,因为即使是同一个 jar 中的类也是相互依赖的。 人们希望这仅对经常更改的 SNAPSHOT 依赖项有用。 通常,这是应用程序本身的情况。 我主要是为 Kuali 应用程序开发的。 这个想法是机构可以为...
该项目使用了一些代码和库,但不使用任何依赖项解析机制,bnd(run)-文件和存储库,它只是根据pom.xml中指定的工件(作为依赖项)创建了启动器。 。 建造 您可能已经猜到了: mvn install 用法 从OSGi项目的pom...
确保在运行之前将项目安装到本地存储库中,否则将找不到中央(* -SNAPSHOT)中不存在的示例。 通过安装到本地,运行时间减少了数十倍。 运行时需要两个参数:“项目的路径”和“本地maven存储库的路径” Usage:java...
注:SpringBoot强大的Auto Config和统一的依赖管理极大的简化了spring配置和maven依赖,在不了解其都配置了哪些东西的基础上可能会对初学者有一定困扰,所以建议初学者先看Guns V1.0 ##功能 简介 用户管理 角色管理 ...
除了项目构建,Maven最核心的功能是软件包的依赖管理,能够自动分析项目所需要的依赖软件包,并到Maven中心仓库去下载。 A)管理依赖的jar包 B)管理工程之间的依赖关系。 3.2. Maven本地仓库 在当前系统用户的...
它受到其他魔术模组的启发,例如或 。 绿怡的当前迭代的实现要归功于由部分大量帮助 ,谁通过至今移植1.8国防部,所以去给他买啤酒什么的,我不知道,他很酷。 Botania已获得 Maven信息 Maven工件位于,每个...
java看原始代码看不到用于使用Tin Can API实施的Java库。 有关托管API文档,基本用法说明,受支持的版本列表等,请访问主项目网站,网址为: 有关Tin Can API的更多信息,请访问: 该库使用Maven 3进行项目管理,...
lchmysqldemo下载源码 可将其通过maven的install方法打包到本地maven仓库中然后通过添加依赖 com.lch lch-mybatis-demo 2.7-SNAPSHOT 或者直接将源码拖到自己的项目中即可使用第一现在配置...
看不到源码通用异步处理器 UniversalAsyncHandler 高效地提供 http post 请求... 该库对于仍在使用 AsyncTasks 发布数据的用户非常有效。 只有您必须在根 build.gradle 中添加 jitpack : allprojects { ...
由于exp-libs封装了大量第三方构件,因此需要在开发环境直接导入到Maven的pom.xml文件使用, 利用pom文件自动加载第三方依赖构件(若仅导入单个exp-libs.jar,有很多功能是无法使用的)。 POM坐标(完全版): ...
构建可执行jar Spring Boot提供了 ,它将应用程序类以及所有依赖项jar打包到一个jar中。 在查看更多详细信息。 使用pom.xml中指定的spring boot maven插件,创建Spring Boot可执行jar很简单./mvnw清洁包它会在目标...
并添加依赖; dependencies { compile ' com.iainconnor:sectionedlistview:0.0.1-SNAPSHOT ' } 在其他构建工具中安装 下载最新版本的.jar 。 将其添加到您的项目中。 如果您正在为 Android 构建,请请求您的...
这是什么? 它将数字相加,相减和相乘。 但它们可以是很大的数字。 我该如何跑步?... 坦白说,我对手动调用Maven并不了解,但是在这方面应该可以使用。 如果在您的系统上正确设置了Maven,则可以执行以下操
模板 - 嵌入式 Jetty/SpringMVC/JSP 应用程序概括这是一个独立的基于 Spring 的... mvn packagejava -jar target/jetty-springmvc-jsp-template-0.0.1-SNAPSHOT.jar脂肪罐如果您希望拥有一个包含所有依赖项的 jar,请使
不能向下兼容,maven版本在3.5以下$ {reversion}不能被正确替换,将maven升级即可,项目快照版本已传到中央仓库中,稳定版等功能再完善后再发布,现在大家可以先用到快照版本,1.0.0-SNAPSHOT,当然也推荐大家传到...
对于 Maven,添加以下依赖项: < dependency> < groupId>com.moandjiezana.dbutils</ groupId> < artifactId>uncommons-dbutils</ artifactId> < version>1.0.0-SNAPSHOT</ version></ dependency> 见其他依赖