我需要使用哪个版本的JRE才能与JDK 13.0.2编译?

5

我正在弄清楚如何使用Java在我的电脑上打印出“Hello World”的内容。

主要问题是,当我编译代码并尝试运行时,会出现以下错误:

IMAGE: 点击查看图片

实际的代码错误是:

`C:\Users\Pedro\Documents\java>java Myfirst
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: Myfirst 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)

C:\Users\Pedro\Documents\java>`

我发现问题出在JRE(Java运行环境)上。

我的Java版本:

java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) Client VM (build 25.251-b08, mixed mode, sharing)

我的Javac版本:

javac 13.0.2

为了解决这个问题,我想知道:
  1. 为了成功编译我的程序,我需要哪个版本的JRE?
  2. 如果第1点不是问题所在,我该如何解决这个问题?
3个回答

3

从Java 11开始,JRE已经不存在了。您只需要安装JDK并正确设置bin文件夹的路径即可。

您只需要在环境变量PATH中设置JDK 13.0.2bin文件夹路径,并将此条目移到顶部。我建议您同时将其设置为用户变量和系统变量。

之后,您需要打开一个新的cmd窗口,然后再次检查版本。现在,您会看到java -version返回JDK 13.0.2

现在,编译程序并运行它,或者简单地执行java Myfirst.java。从Java 11开始,您可以直接运行Java文件(前提是文件中最上方的类具有main方法),无需进行编译。


1
你为什么需要不同版本的JDK和JRE?这看起来很奇怪。
我会这样做:
1)卸载所有的JDK和JRE。
2)安装JDK 8,并在安装过程中告诉安装程序不要安装独立的JRE,浏览器插件或其他任何东西。只安装JDK即可。
这是我的一般建议,以避免麻烦。
这样,您将只拥有一个JDK,它还提供了一个JRE
(然后JRE java将与编译器javac的版本相同)。
对于您的问题:
A)要么使用与您编译时的JDK版本(13.0.2)相同的JRE版本运行它。
B)要么在编译时指定java -source 1.8 MySourceFile.java
然后您就可以使用JRE 1.8运行它。
但在尝试A)和B)之前,请先遵循一般建议。

谢谢 Peter,问题出在 JRE 上。 - Pedro Uzcátegui

0

您需要重新安装Java,请使用以下链接进行下载:

在这里下载带有Netbeans的Java!

请先从控制面板中完全卸载Java,确保卸载所有组件,然后安装下载的文件,其中包含所有软件包。


谢谢,问题是JRE。 - Pedro Uzcátegui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接