NoClassDefFoundError 排查思路

    xiaoxiao2026-05-08  17

    1.问题场景

    school-1.1.0.jar中没有Student类。 school-1.1.1.jar中有Student类。

    虽然在pom中指定了引入的是school-1.1.1.jar,但可能maven打包后只有school-1.1.0.jar而没有school-1.1.1.jar。那么运行时就会报错java.lang.NoClassDefFoundError

    2.命令

    #执行此命令,可以看指定目录下哪些jar包中有哪些类,含有指定关键字。 for i in xxx/lib/*.jar; do jar -tvf $i | grep 'MessageOrBuilder' && echo $i ; done

    执行效果见图2-1.

    图2-1 查看哪个jar包中有哪些文件

    2.1 jar

    存在于jdk的bin/目录下,用于查看jar包中的内容。

    jar -tvf file  查看指定jar中有哪些文件,也即哪些类,显示示例见下行:

    1265 Thu Jan 13 23:06:38 CST 2011 org/apache/commons/lang/time/FastDateFormat$UnpaddedMonthField.class

    3.经验

    如果lib/目录下只有低版本的包,没有高版本的包,可以尝试把高版本的<dependency>配置放在最前面。

    最新回复(0)