为了账号安全,请及时绑定邮箱和手机立即绑定

我需要做什么来解释这个 Java 程序?

我需要做什么来解释这个 Java 程序?

呼如林 2021-10-20 14:31:48
我刚刚开始使用Java。我一直在按照这个问题的答案中的说明来编译和运行我的第一个 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 againException 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.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)我看过这个问题,结合我收到的错误消息向我表明,无论 Java 正在运行我的程序,它都适用于比我的编译器正在生成的旧版本文件。按照上述问题的答案的建议,我尝试运行javac -target 8 HelloWorld.java. 但是,这也不起作用。我收到以下警告:warning: target release 8 conflicts with default source release 11并且没有HelloWorld.class被创建。我有一种感觉,我需要 Java Runtime Environment 11,但我不知道您是如何获得它的。搜索诸如“get JRE 11”之类的查询会将我返回到提供“版本 8”的主要 Java 下载页面。附录:我保存的目录HelloWorld.java称为java,如果这有什么不同的话。
查看完整描述

3 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

您的计算机上似乎安装了 Public JRE 8。公共JRE复制它的安装java.exejavaw.exeC:\Windows\System32和做您的Windows其他一些变化,比如在你的注册表更改。该C:\Windows\System32目录PATH默认注册在环境变量的系统部分。在 Windows 中,您有PATH环境变量的系统和用户定义,系统部分首先出现在最终PATH环境变量中。您可以PATH通过pathcmd窗口中运行命令来检查最终结果。因此,当您运行java第一个java.exeWindows 时,找到并实际运行的是C:\Windows\System32目录中的一个,这java.exe是无法运行较新 Java 类的 Public JRE 8。

与以前的 JDK 版本不同,JDK 11 没有 Public JRE,因此在您安装 JDK 11 之后,您的 Public JRE 8 并未升级。只需卸载所有公共 JRE,这将解决您的问题。您可以保留以前安装的 JDK,它们不会打扰您。


查看完整回答
反对 回复 2021-10-20
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

您必须设置 Java 娱乐变量的 PATH。你可以按照截图 

//img1.sycdn.imooc.com//616fb80f0001b83516750806.jpg

查看完整回答
反对 回复 2021-10-20
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

发生这种情况是因为 JRE 版本和 JDK 版本不匹配。

看起来您已经在系统中安装了 JRE 8,但您使用的是 JDK 11 。 请浏览这个维基百科

旧版本的 JAVA RUN ENGINE 无法执行新版本的 java 类。要执行,您始终必须创建相同版本的类。

在这里,您只需编写此命令即可执行代码

编译使用

javac HelloWorld.java --release 8

然后执行

java HelloWorld


查看完整回答
反对 回复 2021-10-20
  • 3 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信