我已经使用jdk 8很长时间了,最近我下载了jdk 12。 显然,我仍然在jdk 8上运行一些程序,并且我不打算删除它。 我花了几个小时研究其他问题和视频,但是我没有找到解决问题的方法,我想测试该程序,所以我制作了一个jar文件,当我尝试从cmd运行它时,它向我展示了这个:
Exception in thread "main" java.lang.UnsupportedClassVersionError: Main 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)
所以我遵循了很多有关运行多个JDK的问题,这就是我所做的: 1-这样将path变量更改为JDK 12:
3.6.1\bin;C:\Program Files\Java\jdk-12.0.1\bin
但是当我尝试执行jar文件时,发生了同样的问题,并且当我使用java -version检查Java版本时,它显示:
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
将建议任何指导。我提到Windows 7,因为找到的所有视频都是针对Windows 10的。
编辑: 现在我完全卸载了两个jdk,重新安装了jdk 12,我使用的是IntelliJ,并且从它执行时可以正常工作,但是对于我的旧jar,它向我显示了此信息:
C:\Users\Simou\Desktop\INOVA\Stock\INOVA\out\artifacts\Rayane_jar>java -jar
INOV
A.jar
Error: Could not find or load main class Main
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application
在所有这些之前,这个罐子工作得很好。
EDIT2: 在尝试了Holger的解决方案之后,现在我明白了,知道我已经在项目中导入了JavaFx 12库,并且已经完成了配置到IntelliJ中,正如我之前提到的那样,当我从IDE执行时,一切正常,我如何现在解决这个吗?
"C:\Program Files\Java\jdk-12.0.1\bin\java" -jar TP_NLP_ALGO.jar
Graphics Device initialization failed for : d3d, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing
QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:243)
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.jav a:658)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer:
no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
... 1 more
Exception in thread "main" java.lang.RuntimeException: No toolkit found
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:835)
答案 0 :(得分:0)
因此,在寻找与我的问题相似的问题之后,我找到了这个答案migration from JavaFX8 to 11 所以我将JavaFX12 bin的路径添加到PATH变量中,然后以@Holger在他的注释中告诉我的方式从命令行执行(因为我的系统中有两个JDK,并且我使用12构建了该应用程序)。 好吧,它按预期工作,希望对未来的访问者有用。