我以前用 jdk 8 编写应用程序。我升级到了 jdk 12,但我的 jre 似乎仍在 1.8 上。我试图找到 jre 12 的官方下载站点,但它总是重定向到 1.8。之后我不再关心 JDK 12,并尝试下载旧的 jdk 8,但当我尝试下载时,该站点要求我在 Oracle 注册。https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
难道不能免费使用 Java 供私人使用吗?我是否应该考虑改用 openJDK?如何解决这个问题?
这是 cmd 输出。该应用程序是使用 JDK 12 编写的。
C:\Users\whoami\Desktop>java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) Client VM (build 25.221-b11, mixed mode, sharing)
C:\Users\whoami\Desktop>java -jar exd.jar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: docxxxenc/Startup has been compiled by a more recent version of the Java Runtime (class file version 56.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)
答案1
版本 12 尚未提供 JRE,与之前的版本不同,现在 JDK 将包含运行和编译代码所需的一切。我猜您无法运行它的原因与您的系统变量有关,您需要确保您的环境变量指向正确的路径,就像您通常所做的那样:
JAVA_HOME=(你的 jdk 路径)和 小路=%JAVA_HOME%\ bin;