我需要做什么来解释这个 Java 程序?
What do I need to do to interpret this Java program?
我刚开始使用 Java。我一直在按照 this question 的答案中的说明进行编译,运行 我的第一个 Java 程序。我刚刚安装了 JDK 11 并将路径设置为 C:\Program Files\Java\jdk-11\bin
。完成后,我已经能够使用以下命令编译我的程序:
javac HelloWorld.java
(文件名为 HelloWorld.java
。)
因此目录中出现一个名为 HelloWorld.class
的文件。现在我尝试 运行 使用此命令的程序:
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 55.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.access0(Unknown Source)
at java.net.URLClassLoader.run(Unknown Source)
at java.net.URLClassLoader.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)
我查看了 this question,结合我收到的错误消息向我表明,无论 Java 是什么 运行 我的程序都适用于旧版本比我的编译器生成的文件还要多。
根据上述问题答案的建议,我尝试了运行ning javac -target 8 HelloWorld.java
。但是,这也不起作用。我收到以下警告:
warning: target release 8 conflicts with default source release 11
并且没有创建 HelloWorld.class
。
我觉得我需要 Java Runtime Environment 11,但我不知道你是怎么得到它的。搜索 "get JRE 11" 之类的查询会将我带回 the main Java download page,它提供 "version 8".
附录:我保存 HelloWorld.java
的目录叫做 java
,如果这有什么区别的话。
您的计算机上似乎安装了 Public JRE 8。 Public JRE 的安装程序将其 java.exe
和 javaw.exe
复制到 C:\Windows\System32
中,并在您的 Windows 中进行一些其他更改,例如注册表中的更改。这个C:\Windows\System32
目录默认注册在PATH
环境变量的系统部分。在 Windows 中,您有 PATH
环境变量的系统和用户定义,系统部分首先出现在最终的 PATH
环境变量中。您可以通过 运行 在 cmd
window 中使用 path
命令来检查最终的 PATH
。所以当你 运行 java
第一个 java.exe
Windows 找到并且实际上 运行 是 C:\Windows\System32
目录中的那个 java.exe
属于 Public JRE 8,不能 运行 类 较新的 Java。
与以前的 JDK 版本不同 JDK 11 没有 Public JRE,所以在您安装 JDK 11 之后您的 Public JRE 8 是'吨升级。只需卸载所有 Public JRE,即可解决您的问题。您可以保留以前安装的 JDK,它们不会打扰您。
发生这种情况是因为 JRE 版本与 JDK 版本不匹配。
您的系统中似乎安装了 JRE 8,但您使用的是 JDK 11。 please go through this wikipedia
旧版本 JAVA 运行 ENGINE 无法执行 java class 的较新版本。
要执行,您总是必须创建相同版本的 class。
这里只要写这个命令就可以执行代码
编译使用
javac HelloWorld.java --release 8
然后执行
java HelloWorld
您必须设置 Java 娱乐变量的路径。
你可以按照截图
我刚开始使用 Java。我一直在按照 this question 的答案中的说明进行编译,运行 我的第一个 Java 程序。我刚刚安装了 JDK 11 并将路径设置为 C:\Program Files\Java\jdk-11\bin
。完成后,我已经能够使用以下命令编译我的程序:
javac HelloWorld.java
(文件名为 HelloWorld.java
。)
因此目录中出现一个名为 HelloWorld.class
的文件。现在我尝试 运行 使用此命令的程序:
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 55.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.access0(Unknown Source)
at java.net.URLClassLoader.run(Unknown Source)
at java.net.URLClassLoader.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)
我查看了 this question,结合我收到的错误消息向我表明,无论 Java 是什么 运行 我的程序都适用于旧版本比我的编译器生成的文件还要多。
根据上述问题答案的建议,我尝试了运行ning javac -target 8 HelloWorld.java
。但是,这也不起作用。我收到以下警告:
warning: target release 8 conflicts with default source release 11
并且没有创建 HelloWorld.class
。
我觉得我需要 Java Runtime Environment 11,但我不知道你是怎么得到它的。搜索 "get JRE 11" 之类的查询会将我带回 the main Java download page,它提供 "version 8".
附录:我保存 HelloWorld.java
的目录叫做 java
,如果这有什么区别的话。
您的计算机上似乎安装了 Public JRE 8。 Public JRE 的安装程序将其 java.exe
和 javaw.exe
复制到 C:\Windows\System32
中,并在您的 Windows 中进行一些其他更改,例如注册表中的更改。这个C:\Windows\System32
目录默认注册在PATH
环境变量的系统部分。在 Windows 中,您有 PATH
环境变量的系统和用户定义,系统部分首先出现在最终的 PATH
环境变量中。您可以通过 运行 在 cmd
window 中使用 path
命令来检查最终的 PATH
。所以当你 运行 java
第一个 java.exe
Windows 找到并且实际上 运行 是 C:\Windows\System32
目录中的那个 java.exe
属于 Public JRE 8,不能 运行 类 较新的 Java。
与以前的 JDK 版本不同 JDK 11 没有 Public JRE,所以在您安装 JDK 11 之后您的 Public JRE 8 是'吨升级。只需卸载所有 Public JRE,即可解决您的问题。您可以保留以前安装的 JDK,它们不会打扰您。
发生这种情况是因为 JRE 版本与 JDK 版本不匹配。
您的系统中似乎安装了 JRE 8,但您使用的是 JDK 11。 please go through this wikipedia
旧版本 JAVA 运行 ENGINE 无法执行 java class 的较新版本。 要执行,您总是必须创建相同版本的 class。
这里只要写这个命令就可以执行代码
编译使用
javac HelloWorld.java --release 8
然后执行
java HelloWorld
您必须设置 Java 娱乐变量的路径。
你可以按照截图