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

时间:2018-09-30 16:18:13

标签: java compilation java-11

我刚刚开始使用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.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)

我看过this question,它与我收到的错误消息结合在一起,提示我,无论运行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”之类的查询,将我带回到the main Java download page,后者提供“版本8”。

附录:如果保持不变,我将HelloWorld.java保留在的目录称为java

3 个答案:

答案 0 :(得分:2)

您似乎在计算机上安装了Public JRE 8。 Public JRE的安装程序会将其java.exejavaw.exe复制到C:\Windows\System32中,并在Windows中进行其他一些更改,例如注册表中的更改。默认情况下,此C:\Windows\System32目录已注册到PATH环境变量的系统部分。在Windows中,您具有PATH环境变量的系统和用户定义,并且系统部分首先出现在最终的PATH环境变量中。您可以通过在PATH窗口中运行path命令来检查最后的cmd。因此,当您运行java时,第一个java.exe Windows查找并实际运行的是C:\Windows\System32目录中的Windows,而这个java.exe是不能运行类的Public JRE 8较新的Java。

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

答案 1 :(得分:0)

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

看起来您已在系统中安装了JRE 8,但您正在使用JDK 11。 please go through this wikipedia

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

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

使用

进行编译
  

javac HelloWorld.java --release 8

然后执行

  

java HelloWorld

答案 2 :(得分:0)

您必须设置Java Entertainment Variable的PATH。 您可以按照屏幕截图 enter image description here

相关问题