Exception in thread “main“ java.lang.NoClassDefFoundError

Posted 挖掘者hy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Exception in thread “main“ java.lang.NoClassDefFoundError相关的知识,希望对你有一定的参考价值。

项目场景:

验证继承情况下子类创建对象时,先调用父类的构造方法,再调用子类的构造方法


问题描述

随机(不同次数的测试下)会产生Exception in thread "main" java.lang.NoClassDefFoundError错误

package everydayhomework;

public class Day09 
    public Day09()
        System.out.println("父类的");
    
    public static void main(String[] args) 
        DAY03 day = new DAY03();

    

class DAY03 extends Day09
    public DAY03() 
        System.out.println("子类的");
    

 


原因分析:

我的同等目录下的包也存在着这个Day03这个类,与此类冲突了,但编译时没有报错,所以不容易发现,只不过和DAY03大小不同


解决方案:

将子类的类名DAY03修改成DAY10即可

Exception in thread "main" java.lang.UnsupportedClassVersionError

在用自定义Classloader加载class文件时,出现了这个错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: Hello : Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
    at JVM.MyClassLoader.findClass(MyClassLoader.java:21)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at JVM.ClassLoaderChecker.main(ClassLoaderChecker.java:6)

我这里

是因为在cmd上javac编译的,但是你eclipse的编译环境与你系统上的不一样。我就是,配的1.8但是eclipse用的是1.7的环境,然后就一直报错,改成1.8后就好了。

 

原因:

这个问题确实是由较高版本的JDK编译的java class文件试图在较低版本的JVM上运行产生的错误。

    1、解决措施就是保证jvm(java命令)和jdk(javac命令)版本一致。如果是linux版本,则在命令行中分别输入java -version和javac -version命令来查看版本是否一致。这里假设都是1.7版本。

    2、如果都一致,但还是解决不了问题,那么你肯定不是直接在命令行中用javac来编译的,而是用类似于eclipse、netbeans这样的编译器来编译的。因为很多编译器都自带javac,而不是采用操作系统中的编译器。如果你的编译器是eclipse的话,那么需要在项目的属性里设置jdk版本,方法是右击项目-->properties-->java compiler --> Enable project specific settings -->将compiler compliance level设置为1.7,也就是与jvm一致的版本(在命令行中java -version所显示的版本)。

    综上,如果你是用编译器来编译的话,请首先确保编译器自带的jdk版本是否和操作系统中的java版本一致。

 

以上是关于Exception in thread “main“ java.lang.NoClassDefFoundError的主要内容,如果未能解决你的问题,请参考以下文章

错误:Exception in thread “main“ java.lang.ClassCastException

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

Exception in thread "main" java.lang.NullPointerException at Class.main

Exception in thread "main" java.lang.ClassCastException

Exception in thread "main" org.springframework.mail.MailSendException; nested exception de

Exception in thread “main“ java.lang.NoClassDefFoundError: org/apache/flink/