NoClassDefFoundError问题排查

简介: NoClassDefFoundError问题排查

1. 问题描述

首先贴出错误:

本地跑是没有报错的,打包后运行就报错了。

2. 问题排查

可以看到是没有依赖到CatalogFactory,全局搜索,可以看到该类在flink-table-common-1.13.6.jar这个包。

3. 问题解决

3.1 解决方案1-添加依赖

查看pom文件,看看有没有依赖,如果没有,添加该依赖。

注意:一般到这里就可以解决NoClassDefFoundError这个错误了,下面来看看特殊的情况。

3.2 解决方案2-修复代码

如果依赖了,打包后,运行时还有此错误,就需要解压Jar包,看看/BOOT-INF/lib目录,有依赖没有此jar包,如果没有,就是打包有问题了。

如果有,依然提示此问题,则可能是代码问题了。


我们看看代码,代码片段如下:

// 使用URLClassLoader加载本地的jar包
URL url = new File("/temp/test.jar").toURI().toURL();
URLClassLoader classLoader = new URLClassLoader(new URL[]{url});
// 下面是ClassLoader的操作
......

注意:上面是使用URLClassLoader只是加载了test.jar里面的内容,Jar包里面是没有CatalogFactory,所以就报这个错误了!

该如何解决呢?可以使用URLClassLoader里面的 “继承”,就是该URLClassLoader继承当前环境的ClassLoader即可,改写完如下:

URL url = new File(jarLocalUrls).toURI().toURL();
URLClassLoader classLoader = new URLClassLoader(
  new URL[]{url}, 
  Thread.currentThread().getContextClassLoader()
);

最后,问题就解决了。

4. 排查的方法记录

4.1 查找jar包是否存在、引用某个类的命令

find ./ -name “*.jar” | xargs grep “xxx”

4.2 查看加载了什么类

java -verbose -jar data-rtc-manage-1.0.0.jar

4.3 Jar包启动流程

参考:《SpringBoot可执行jar包启动原理》

5. 文末

本文记录下这个bug,希望能帮助到大家,谢谢大家的阅读!

目录
相关文章
|
4月前
|
监控 网络协议 NoSQL
java线上排查OOM内存溢出
java线上排查OOM内存溢出
176 1
|
11月前
|
监控 Java
jvm异常排查
jvm异常排查
44 0
|
Arthas Java 测试技术
Arthas 排查JVM问题总结
Arthas 排查JVM问题总结
377 0
Arthas 排查JVM问题总结
|
缓存 算法 Java
JVM问题排查
JVM问题排查
154 0
|
SQL 存储 Java
【问题处理】—— 一次内存溢出(OutOfMemoryError)实战排查
【问题处理】—— 一次内存溢出(OutOfMemoryError)实战排查
246 0
|
Java
java 异常进阶 多异常和自定义异常详解
java 多异常,子父类异常,自定义异常详解。
188 0
java 异常进阶 多异常和自定义异常详解
|
Java Linux
Java服务CPU100%异常排查实践总结
写作目的 最近看牛客网发现了CPU 100% 怎么办这个问题,这个问题的重点是定位和解决,会用到Linux和java的的很多命令,所以写篇博客记录和总结一下。
175 0
Java服务CPU100%异常排查实践总结
JAVA-异常问题-NoClassDefFoundError和ClassNotFoundException
我们在JAVA开发中-遇到的NoClassDefFoundError和ClassNotFoundException异常问题
|
Web App开发 监控 Java
java线上服务问题排查总结
java线上服务问题排查 1、业务日志相关 如果应用系统出现异常,一般都会在业务日志中体现 查看日志问题常用命令,以标装springboot应用为例: 进到标装日志目录:cd /wls/applogs/rtlog/spri* --善用tab键 统计当天业务日志中ERROR出现数量:egre.
47285 0
Java问题解决录: 运行时抛出NoSuchMethodError / NoSuchFieldError异常
Java问题解决录: 运行时抛出NoSuchMethodError / NoSuchFieldError异常
Java问题解决录: 运行时抛出NoSuchMethodError / NoSuchFieldError异常