近期在开发一个maven项目的时候,遇到了这样的报错:
java.lang.NoClassDefFoundError: com/google/common/base/MoreObjects
NoClassDefFoundError解决的三种办法(参考:https://my.oschina.net/jasonultimate/blog/166932):
1.首先是类在运行的时候依赖于其它的一个jar包,但是该jar包没有加载到classpath中或者是该jar包的名字被其他人改了,就像我的一个例子tibo.jar改为了tibco_v3.jar…….
2.运行的类不在classpath中,这个问题没有一个确定的方法去知道,但是很多时候你可以通过System.getproperty(”java.classpath“)方法,该方法能让你至少可以领略到实际存在的运行期间的classpath。
3.试着通过-classpath命令明确指出你认为正确的classpath,如果能够正常执行的话就说明你使用的classpath是正确的,而系统中的classpath已经被修该过了
这里只详细讲第一种情况。
遇到NoClassDefFoundError报错后,查看项目中是否有MoreObjects这个类,如果没有,pom文件中加入缺少的依赖。如果有,进入该类,查看它所在的jar包是否存在冲突(比如不同版本的同种jar包),发现冲突后,进入对应的pom文件,然后如图
显示依赖关系
根据这个依赖关系,可以找出jar包被谁依赖,逐步解决冲突。
我的项目中需要依赖guava19.0但是之前的许多相关联的项目中都间接依赖了guava14.0,如果14依赖的少,可以逐个exclude,但是依赖过多就不行了。
可以在根pom中写明,这样就会优先选择你指定的版本了
<dependencyManagement> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>3.0.0</version> </dependency> </dependencies> </dependencyManagement>
祝好运。
相关推荐
Maven的Jar包冲突问题,经常出现的场景为: 本地运行报NoSuchMethodError,ClassNotFoundException。明明在依赖里有这个Jar包啊。怎么运行不了!? 项目中明明定义着某个jar包版本为2.0.2,怎么打包之后变成2.5.0了...
setting处理了,也将jar包的版本号都试了一遍,还是没解决,后来请教大牛,原来是没连网,maven工程加载了一部分jar包,连网之后自动下载的jar包跟之前的冲突,用这个脚本放在Maven仓库的目录,直接打开,可以将之前...
电脑暂时没有装maven,最近突发奇想,向在搭建一个spring boot非maven项目,折腾了两个小时,下载jar包冲突问题居多,最后结合网上博客,整理了一份spring boot所需的jar包,亲测没有问题
minIO-6.0.11版本,在非maven的老项目中集成一个技术真的是很头疼的一件事,因为jar包冲突能让你浪费半天时间,所有未了大家遍历就拿去用吧!可以互相交流技术哦大家!
主要介绍了Maven中jar包冲突原理与解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
5、涉及到的jar冲突,取决于自己的项目 pom示例:项目中存在冲突再 exclusion 添加即可 <groupId>com.customize</groupId> <artifactId>easyexcel <version>2.2.6 <groupId>javax.servlet <artifactId>...
Maven解决jar冲突调试步骤
自用maven的jar包整理,没有冲突,可以直接粘贴复制,直接使用
国标 ofd 文件 转 pdf 文件的依赖jar包,踩过很多坑,希望能帮到大家,如果是maven项目当我没说.如果缺少请留言,查缺补漏.
主要介绍了Maven jar包冲突的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
16个jar包文件非Maven!亲测可用!不存在jar冲突等问题的。
腾讯云短信服务进行java开发所需要的jar包整合。参上。
okio-1.7.0.jar、okhttp-2.7.5.jar
本插件参考58开源插件MavenManager,采用dependencyManagement方式,一键解决Java开发过程中使用maven作为依赖管理时的jar包依赖冲突问题,相比MavenHelper更加省时省力,jar包版本采用最新版本号原则
关于google的tink解密用的...如上图,utils包A下的tink中未成功引入protobuf包,判断是jar包冲突,看是否是其他的jar包也引入了其他版本的protobuf包,于是,在IDEA的命令行执行命令,mvn dependency:tree ,看是否有
既能不升级jar包又能使用高版本依赖同时还不造成冲突的完美解决方案
java常用的开发jar包,数据库连接,框架,Excel读取,struts2
由于现在版本需要使用poi3.17以上版本,对项目本身有poi3.16的很不友好,jar包冲突,通过修改jar包路径达到目的,解决jar包冲突
MavenRunHelper,用于进行maven项目jar包依赖关系以及冲突情况查看的工具类
1. 使用maven工具将项目打包,生成jar包; 2. 将jar包复制到Linux系统中的某个文件夹下,此时采用xshell与xftp工具完成,如下: 3. 编写startup.sh启动程序。新建startup.sh文件,使用vim编辑如下: nohup java -...