JNI 错误:类已由较新版本的 Java 运行时编译

我有一个包含两个类的 MyFirst 程序.java文件。我刚刚修改了路径,并尝试使用和测试文件。javajavac


public class MyFirstProgram{

    public static void main(String[] args){

        System.out.println("Hello ! World :)");

    }

}

但是,它返回我:


C:\Users\antoi\Documents\Programming\Julien>java MyFirstProgram.java

Error: Could not find or load main class MyFirstProgram.java


C:\Users\antoi\Documents\Programming\Julien>javac MyFirstProgram.java

'javac' is not recognized as an internal or external command,

operable program or batch file.

这是路径:

http://img2.mukewang.com/632c50b80001058305260499.jpg

只有当我直接在文件夹中调用javac时,它才有效:


C:\Users\antoi\Documents\Programming\Julien>"C:\Program Files\Java\jdk-11.0.2\bin\javac" MyFirstProgram.java


C:\Users\antoi\Documents\Programming\Julien>java MyFirstProgram

Error: A JNI error has occurred, please check your installation and try again

Exception in thread "main" java.lang.UnsupportedClassVersionError: MyFirstProgram 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运行时环境,因为它可能不符合命令。要执行哪些步骤才能打印“你好世界”消息?javaUnsupportedClassVersionErrorjavacjava


ITMISS
浏览 154回答 3
3回答

慕村225694

所以,问题是你正在使用JDK 11进行编译,然后尝试使用Java 8运行。由于 java.exe正在之前被拾取。而且,我猜它找不到,因为您添加了路径,而没有重新启动shell,这意味着路径不会重新加载。javac%JAVA_HOME%\binC:\Program Files\Java\jdk-11.0.2\binjavacC:\Program Files\Java\jdk-11.0.2\bin若要解决此问题,应从路径中删除该条目,然后将环境变量更新为指向。然后重新启动 shell,它应该从 开始扩展。C:\Program Files\Java\jdk-11.0.2\binJAVA_HOMEC:\Program Files\Java\jdk-11.0.2C:\Program Files\Java\jdk-11.0.2\bin%JAVA_HOME%\bin

HUX布斯

该错误说明您的类是由 的较新版本编译的,并且由 较低版本的 执行。JDK-11.0.2JDK-8同样的问题发生在我身上,在我的情况下,我下载Java卸载工具此工具将检查计算机上的Java版本。如果发现过时的版本,此工具将帮助您删除它们。实际上,无论我以何种方式下载版本8的Java更新,都会出现问题,但是借助此工具,我可以轻松卸载版本8的更新,然后像往常一样运行我的程序。在环境变量中,我设置了系统变量/路径,如下所示,这已经是完美的:添加新变量,例如:变量名: JAVA_HOME变量值: C:\ProgramFiles\Java\jdk-13.0.2编辑路径,如下所示:%JAVA_HOME%\bin

慕森王

该错误说明您的类是由较新版本的 JDK-11.0.2 编译的,并且它由较低版本的 JDK-8 执行。在“环境变量”中,编辑“系统变量中列出的路径”。将 Java 路径向下移动到底部。现在重新启动外壳/cmd 提示符
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java