JVM 出现如下异常时的解决思路(类冲突,jar包冲突等问题)

在开发过程当中,编译期间发生的异常比较好确定,但是有些在代码运行期间出现的问题,有时候在我们开发过程中是无法预测的。如下:

java.lang.ClassNotFoundException
java.lang.NoSuchFieldException

java.lang.NoSuchMethodError
java.lang.NoClassDefFoundError
java.lang.LinkageError
...

遇到下面这些异常问题,我们应该如何定位问题及解决问题:
jar包版本冲突导致的问题:
Intellij  Ctrl + N + N  查找文件的坐标,查找所需类所在的jar包版本


mvn dependency:tree -Dverbose -Dincludes=org.springframework:spring-core
mvn dependency:tree -Dincludes=org.springframework:spring-core
优先按照依赖管理<dependencyManagement>元素中指定的版本声明进行仲裁,此时下面的两个原则都无效了
若无版本声明,则按照“短路径优先”的原则(Maven2.0)进行仲裁,即选择依赖树中路径最短的版本
若路径长度一致,则按照“第一声明优先”的原则进行仲裁,即选择POM中最先声明的版本

如果还是有问题就看,打包方式,及MANIFAST.MF文件中Class-Path中是否声明了该jar包
如果声明了该jar包路径,

但如果还是还是提示ClassNotFoundException等运行异常则采用System.getproperty("java.classpath") , 打印出运行环境中的jar包加载顺序(依赖加载顺序靠前的jar包)


如果多个不同的jar包中都包含相同的类(Package+FileName)冲突导致的问题
D:\workspace\quartz_dir\netty\target>java -cp netty-1.0-SNAPSHOT.jar -verbose:class com.phei.netty.DoJavaMain > D:\abcd.txt

返回结果中可以查找到类加载的是哪个jar包下的,然后解决Jar包加载顺序

转载于:https://my.oschina.net/LucasZhu/blog/1613479

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值