JAVA 12:运行JavaFx12 jar

时间:2019-07-08 21:39:04

标签: java javafx java-8 java-12

我已经使用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

2-这样停用jre 8: jre

但是当我尝试执行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)

1 个答案:

答案 0 :(得分:0)

因此,在寻找与我的问题相似的问题之后,我找到了这个答案migration from JavaFX8 to 11 所以我将JavaFX12 bin的路径添加到PATH变量中,然后以@Holger在他的注释中告诉我的方式从命令行执行(因为我的系统中有两个JDK,并且我使用12构建了该应用程序)。 好吧,它按预期工作,希望对未来的访问者有用。