我需要使用 JDK 13.0.2 编译什么版本的 JRE?

Ped*_*gui 5 java jvm javac

我正在弄清楚我必须做什么才能使用 Java 将“Hello World”打印到我的 PC 中。

主要是当我编译代码时,当我想运行它时,会出现:

图片: 点击查看图片

实际代码错误:

`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>`
Run Code Online (Sandbox Code Playgroud)

所以,我看到问题出在 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)
Run Code Online (Sandbox Code Playgroud)

我的 Javac 版本:

javac 13.0.2
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我想知道:

  1. 我需要什么版本的 JRE 才能成功编译我的程序?
  2. 如果第 1 项不是问题,我该如何解决?

Arv*_*ash 3

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

您所需要做的就是在环境变量中设置bin文件夹的路径,并将此项移至顶部。我还建议您对用户变量和系统变量都执行此操作。JDK 13.0.2PATH

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

现在,编译程序并运行它 - 或者 - 就像java Myfirst.java从 Java 11 开始一样,您可以运行 java 文件(前提是文件中最顶层的类具有main)而无需编译。