NoClassDefFoundError原因解析 您所在的位置:网站首页 stackoverflow异常原因 NoClassDefFoundError原因解析

NoClassDefFoundError原因解析

2023-10-08 08:03| 来源: 网络整理| 查看: 265

类不在类路径上(Classpath)

比如缺少了某些JAR包,或者Jar包没有被放在类路径上,或者JAR包改名字了因此找不到。

你可能通过jar命令运行的程序,并且类不在manifest文件中ClassPath属性定义的路径上

这个可以通过System.getProperty("java.classpath")来打印类路径查看是否有你的类所在的路径。

有启动脚本覆盖了Classpath环境变量

通过-classpath选项来指定类路径,如果指定类路径成功运行了,那么就是Classpath被覆盖了。

因为NoClassDefFoundError是java.lang.LinkageError的子类,因此也可能是因为如本地库依赖找不到

检查日志文件中是否有ExceptionInitializerError错误,因为如果类静态初始化失败也可能会导致抛出NoClassDefFoundError

因为JVM初始化一个类时是线程安全的,所以如果你利用类的静态代码块来实现线程安全,但是在静态代码块中抛出了异常,那么这个类可能会抛出NoClassDefFoundError。同时如果你查看日志文件的话,应该也有ExceptionInitializerError,因为正式由于ExceptionInitializerError触发了java.lang.NoClassDefFoundError:Could not initialize class。

如下面的代码会因为静态代码块失败抛出NoClassDefFoundError:

/** * Java program to demonstrate how failure of static initialization subsequently cause * java.lang.NoClassDefFoundError in Java. * @author Javin Paul */ public class NoClassDefFoundErrorDueToStaticInitFailure { public static void main(String args[]){ List users = new ArrayList(2); for(int i=0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有