繁体   English   中英

使用 JDK 14 在 CMD 中运行初学者程序的问题

[英]Issues running beginner programs in CMD using JDK 14

我目前正在使用 Herbert Schildt 的“Java A Beginner's Guide 第八版”来学习使用 Java 进行编程。 我没有以前的编程经验,并且遇到了错误。

我的 C 驱动器上安装了 JDK 14。 在长时间遇到无法找到文件的编译器问题之后,我相信我已经解决了这个问题。 但是现在遇到以下情况;

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)

C:\Users\*****>javac -version
javac 14.0.1

C:\Users\*****\mywork> java example
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: example has been compiled by a more recent version of the Java Runtime (class file version 58.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\*****\mywork>

检查您的环境变量PATH是否引用了Java bin 目录。 它的配置可能很奇怪,指的是Jdk8jdk14 。但我不确定那里发生了什么。 出于某种奇怪的原因,您的javac运行Jdk14二进制文件,而java - 从Jdk8二进制文件运行。

然后我会检查where javacmd的位置,这样,我会看到我的java.exe文件的位置。

然后,您可能想要更正您的 Java 安装,并查看您的机器上是否安装了多个二进制文件(jdk14 和 jdk8),也许您想删除其中一个,或者 - 如果您想保留两者 - 确保环境变量设置正确。

最后,您可能还会发现检查echo %JAVA_HOME% (对于 Widows)或 echo $JAVA_HOME(对于 Linux)很有用,以便查看您的JAVA_HOME所指的位置。

请注意,您的问题也可归因于您的 IDE。 例如,如果您有一个使用其内置 Jdk 的IntelliJ ,则可能需要重新配置它。

问题的存在是因为您使用的是 Java 的更高版本(14)来编译文件,并且您正在使用 Java 的较低版本(8)运行它们。

首先,从您的系统中卸载 Java-8。 然后,编译并运行您的程序,如下所示:

javac example.java
java example

但是,从 Java-11 开始,如果example.java文件具有顶级class examplemain ,您甚至不需要使用javac编译它,即您可以直接运行它,如下所示:

java example.java

附带说明一下,您应该遵循Java 命名约定,例如 class, example应命名为Example

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM