NoClassDefFoundError原因解析 | 您所在的位置:网站首页 › stackoverflow异常原因 › NoClassDefFoundError原因解析 |
类不在类路径上(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 实验室设备网 版权所有 |