如何修复java.lang.UnsupportedClassVersionError:不支持的主版本。次版本

如何修复java.lang.UnsupportedClassVersionError:不支持的主版本。次版本,java,jvm,incompatibility,unsupported-class-version,Java,Jvm,Incompatibility,Unsupported Class Version,我正在尝试使用编辑、运行、编译等一体化工具 我已安装,并且已将path变量设置到../bin目录 在记事本++中运行“Hello world”时,我收到以下消息: java.lang.UnsupportedClassVersionError:test\u hello\u world: 不支持的major.minor版本51.0 位于java.lang.ClassLoader.defineClass1(本机方法) 位于java.lang.ClassLoader.DefineClassSecond(

我正在尝试使用编辑、运行、编译等一体化工具

我已安装,并且已将path变量设置到
../bin
目录

在记事本++中运行“Hello world”时,我收到以下消息:

java.lang.UnsupportedClassVersionError:test\u hello\u world:
不支持的major.minor版本51.0
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.DefineClassSecond(未知源)
.........................................
我认为这里的问题在于版本;Java的某些版本可能是旧的或太新的

  • 我怎么修理它
  • 我应该安装JDK,并将path变量设置为JDK而不是JRE吗
  • JRE或JDK中的
    PATH
    变量之间有什么区别

  • 别担心,我已经解决了

    它实际上很简单——您需要用相同的版本安装两个JRE/JDK

    JRE 6->JDK 6

    JRE 7->JDK 7


    等等。

    别担心,我已经解决了

    它实际上很简单——您需要用相同的版本安装两个JRE/JDK

    JRE 6->JDK 6

    JRE 7->JDK 7


    以此类推。

    java.lang.UnsupportedClassVersionError发生的原因是编译时JDK较高,运行时JDK较低。

    java.lang.UnsupportedClassVersionError发生的原因是编译时JDK较高,运行时JDK较低。

    显示的版本号描述了类文件与之兼容的JRE

    报告的主要数字如下:

    JavaSE17=61,
    Java SE 16=60,
    Java SE 15=59,
    Java SE 14=58,
    Java SE 13=57,
    Java SE 12=56,
    Java SE 11=55,
    Java SE 10=54,
    JavaSE9=53,
    Java SE 8=52,
    JavaSE7=51,
    Java SE 6.0=50,
    Java SE 5.0=49,
    JDK 1.4=48,
    JDK 1.3=47,
    JDK 1.2=46,
    JDK 1.1=45
    
    (来源:)

    要解决实际问题,您应该尝试使用较新版本的Java JRE运行Java代码,或者为Java编译器指定目标参数,以指示编译器创建与早期Java版本兼容的代码

    例如,要生成与Java 1.4兼容的类文件,请使用以下命令行:

    javac-target1.4helloworld.java
    

    对于较新版本的Java编译器,您可能会收到一条关于未设置引导类路径的警告。有关此错误的更多信息,请参阅博客文章。

    显示的版本号描述了类文件兼容的JRE版本

    报告的主要数字如下:

    JavaSE17=61,
    Java SE 16=60,
    Java SE 15=59,
    Java SE 14=58,
    Java SE 13=57,
    Java SE 12=56,
    Java SE 11=55,
    Java SE 10=54,
    JavaSE9=53,
    Java SE 8=52,
    JavaSE7=51,
    Java SE 6.0=50,
    Java SE 5.0=49,
    JDK 1.4=48,
    JDK 1.3=47,
    JDK 1.2=46,
    JDK 1.1=45
    
    (来源:)

    要解决实际问题,您应该尝试使用较新版本的Java JRE运行Java代码,或者为Java编译器指定目标参数,以指示编译器创建与早期Java版本兼容的代码

    例如,要生成与Java 1.4兼容的类文件,请使用以下命令行:

    javac-target1.4helloworld.java
    

    对于较新版本的Java编译器,您可能会收到一条关于未设置引导类路径的警告。有关此错误的详细信息,请参阅博客文章。

    此错误意味着您试图加载一个Java“类”文件,该文件是用比您安装的Java版本更新的Java编译的

    例如,您的
    .class
    文件可能是为JDK 7编译的,您正在尝试使用JDK 6运行它

    因此,解决方案是:

    • 升级Java运行时或
    • 如果有源代码,请使用本地Java编译器(如果有)重新编译该类

      javac FileName.java


    对于开发人员来说,如果其他开发人员签入.class文件,并且他们拥有比您更新的java版本,则可能会发生这种情况

    此错误意味着您正试图加载一个Java“类”文件,该文件是用比您安装的版本更新的Java编译的

    例如,您的
    .class
    文件可能是为JDK 7编译的,您正在尝试使用JDK 6运行它

    因此,解决方案是:

    • 升级Java运行时或
    • 如果有源代码,请使用本地Java编译器(如果有)重新编译该类

      javac FileName.java


    对于开发人员来说,如果其他开发人员签入.class文件,并且他们拥有比您更新的java版本,则可能会发生这种情况

    在Eclipse中,我只需进入菜单命令窗口->首选项->Java->编译器,然后将“编译器符合性级别”设置为1.6。

    在Eclipse中,我只需进入菜单命令窗口->首选项->Java->编译器,然后将“编译器符合性级别”设置为1.6。

    您可以用Java 7编译一些JAR库,您只有Java6作为Java运行时。一些新库可能会出现这种情况。

    您可以使用Java 7编译一些JAR库,而Java运行时只有Java 6。这可能发生在一些新的库中。

    在Eclipse的菜单窗口->首选项->Java->编译器中,同时检查“配置特定于项目的设置”

    如果在相同的Java版本中仍然存在错误:请尝试手动删除项目的生成文件夹。然后重新启动Eclipse。

    在Eclipse的菜单窗口->首选项->Java->编译器中,同时选中“配置特定于项目的设置”


    如果在相同的Java版本中仍然存在错误:请尝试手动删除项目的生成文件夹。然后重新启动Eclipse。

    正如一些人在别处回答的那样,Java程序正在运行
    javac -source 1.6 -target 1.6 -bootclasspath /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar HelloWorld.java
    
    javac -source 1.6 -target 1.6 -bootclasspath ./rt.jar HelloWorld.java
    
    Unsupported major.minor version 51.0
    
    <target name="build-java" depends="prepare-build">
        <echo message="Compiling java files"/>
        <javac ....
               target="1.5"...
        </javac>
    </target>
    
    vi ~/.profile
    
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home
    
    source ~/.profile 
    
    java -version 
    
     <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                    </configuration>
                </plugin>
           .....
    
    J2SE 8 = 52
    J2SE 7 = 51
    J2SE 6.0 = 50
    J2SE 5.0 = 49
    JDK 1.4 = 48
    JDK 1.3 = 47
    JDK 1.2 = 46
    JDK 1.1 = 45
    
    JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
    
    javac -version
    
    java -version
    
    jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
    
    dpkg -l "openjdk*" | grep ^i
    
    update-java-alternatives -l
    
    update-alternatives --config java
    
    apt-cache search ^openjdk
    
    apt-get install openjdk-7-jre
    
    yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel
    
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home