LAZNN 发表于 2020-2-11 12:39:25

新手求教

编译class文件出现下面的
怎么搞

E:\java学习\新建文件夹>java HelloWorld
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: HelloWorld has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0
      at java.lang.ClassLoader.defineClass1(Native Method)
      at java.lang.ClassLoader.defineClass(Unknown Source)
      at java.security.SecureClassLoader.defineClass(Unknown Source)
      at java.net.URLClassLoader.defineClass(Unknown Source)
      at java.net.URLClassLoader.access$100(Unknown Source)
      at java.net.URLClassLoader$1.run(Unknown Source)
      at java.net.URLClassLoader$1.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

百度翻译是
出现JNI错误,请检查安装并重试

线程“main”java.lang.UnsupportedClassVersionError中出现异常:HelloWorld已由更新版本的java运行时(类文件版本57.0)编译,此版本的java运行时仅识别高达52.0的类文件版本

苏沫儿 发表于 2020-2-11 13:44:44

字面意思运行的class文件版本是57.0的而你安装的java最高只识别52.0的class文件版本所以会报错

LAZNN 发表于 2020-2-11 13:54:14

苏沫儿 发表于 2020-2-11 13:44
字面意思运行的class文件版本是57.0的而你安装的java最高只识别52.0的class文件版本所以会报错

但是我安装的就是官网提供的java

LAZNN 发表于 2020-2-11 14:00:14

苏沫儿 发表于 2020-2-11 13:44
字面意思运行的class文件版本是57.0的而你安装的java最高只识别52.0的class文件版本所以会报错

我去官网下载了一遍Java安装,运行后还是这个结果

苏沫儿 发表于 2020-2-11 15:04:37

LAZNN 发表于 2020-2-11 14:00
我去官网下载了一遍Java安装,运行后还是这个结果

你能否给我看一下你的编辑器设置的编译器版本?

苏沫儿 发表于 2020-2-11 15:15:39

LAZNN 发表于 2020-2-11 14:00
我去官网下载了一遍Java安装,运行后还是这个结果

你把编译用的jdk版本设置成1.8 就可以了

LAZNN 发表于 2020-2-11 15:57:19

苏沫儿 发表于 2020-2-11 15:15
你把编译用的jdk版本设置成1.8 就可以了

我输入的是javac -version,他显示的是13.0.2,我去网上搜搜

LAZNN 发表于 2020-2-11 15:59:06

苏沫儿 发表于 2020-2-11 15:15
你把编译用的jdk版本设置成1.8 就可以了

我是在dos那个黑窗口运行的,因为b站教学用的就是dos

月满霜华 发表于 2020-2-11 16:58:18

官网下载不用注册也可以的。。。不信你试试

LAZNN 发表于 2020-2-11 17:10:46

月满霜华 发表于 2020-2-11 16:58
官网下载不用注册也可以的。。。不信你试试

叫什么,是JDK吗,我就是在官网下载的鸭

月满霜华 发表于 2020-2-11 17:14:34

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

月满霜华 发表于 2020-2-11 17:25:10

注意要选择download this software.
Accept License Agreement
这里发布了图片,我没法指给你看,
给个最佳答案哟

LAZNN 发表于 2020-2-11 18:29:48

月满霜华 发表于 2020-2-11 17:25
注意要选择download this software.
Accept License Agreement
这里发布了图片,我没法指给你看,


他还要创建账户。。

LAZNN 发表于 2020-2-11 18:41:55

月满霜华 发表于 2020-2-11 17:25
注意要选择download this software.
Accept License Agreement
这里发布了图片,我没法指给你看,


版本是1.8.几,但是运行结果还是那个样子,下载的是你的那个,我下的是windows 64位的

LAZNN 发表于 2020-2-11 20:06:28

LAZNN 发表于 2020-2-11 18:29
他还要创建账户。。

哦哦,我解决了,我下载了1.8之后重新javac了一遍,用新的class文件就可以运行了

LAZNN 发表于 2020-2-11 20:07:10

苏沫儿 发表于 2020-2-11 15:15
你把编译用的jdk版本设置成1.8 就可以了

谢谢,已经解决了

苏沫儿 发表于 2020-2-11 20:29:07

是我解释不清楚嘛0.0首先你没必要重新下载.

问题在于这是由较高版本的JDK编译的java helloworld class文件试图在较低版本的JVM上运行产生的错误。
在安装jdk时候,jre不要装同一目录,否则覆盖了之后javac.exe就没了,环境变量%JAVA_HOME%结尾不要加分号,不然其他相关引用后面就多了分号。

解决方式
不用IDE的话可以使用javac命令javac命令格式及用法如下:
用法:javac <选项> <源文件>
其中,可能的选项包括:
-source <版本> 提供与指定版本的源兼容性
-target <版本> 生成特定 VM 版本的类文件
例如:
C:\>javac -source 1.8 -target 1.8 helloworld.java
这样就把helloworld.java源文件兼容的编译成1.8版本了
1.8是你电脑 java -version 显示的版本我只是做例子教你怎么修改

苏沫儿 发表于 2020-2-11 20:39:56

LAZNN 发表于 2020-2-11 20:07
谢谢,已经解决了

刚没刷新页面没看到消息刚回复的请无视

LAZNN 发表于 2020-2-11 23:47:47

苏沫儿 发表于 2020-2-11 20:29
是我解释不清楚嘛0.0首先你没必要重新下载.

问题在于这是由较高版本的JDK编译的java helloworld cla ...

没有啊,我安装的JDk版本是13.0,我又下载了一个版本是1.8
我就用1.8的重新编译的class就能运行了
之后我把13.0删了
我第二天学hh好多看不懂
页: [1]
查看完整版本: 新手求教