繁体   English   中英

使用Java 10运行.jar文件时缺少JavaFX应用程序类

[英]Missing JavaFX application class when running .jar file with Java 10

我的问题如下:安装Java 10后,无法运行用Java 1.8生成的.jar文件。

在控制台中,java -version显示:

java版本“ 10.0.2” 2018-07-17 Java(TM)SE运行时环境18.3(内部版本10.0.2 + 13)Java HotSpot(TM)64位服务器VM 18.3(内部版本10.0.2 + 13,混合模式)

当我双击.jar时,它没有启动,并且当我使用java -jar APP.jar从控制台运行它时,出现以下错误: 缺少JavaFX应用程序类feedmeclient.FeedMeClient

有趣的是, 它的作品 ,如果我恢复到Java 1.8,或者如果我喜欢这个控制台调用java 1.8完整路径: “C:\\ Program Files文件(x86)的\\的Java \\ jre8u162 \\ BIN \\的java.exe” -jar APP。 jar,则可以正常工作。

APP.jar是使用NetBeans 8.2构建的,Java不应该向后兼容吗?

.jar文件包含清单,看起来像这样:

Manifest-Version: 1.0
Implementation-Title: FeedMeClient
X-COMMENT: Main-Class will be added automatically by build
Implementation-Version: 1.0
Permissions: sandbox
Codebase: *
JavaFX-Version: 8.0
Class-Path: lib/CustomFXComponents.jar lib/FeedMeDataLayer.jar lib/com
 mons-io-2.4.jar
Created-By: JavaFX Packager
Implementation-Vendor: bostinac
Main-Class: feedmeclient.FeedMeClient

所以...经过很多努力,我认为我发现了问题...实际上还有更多问题:

  1. 看来Netbeans 8.2不能与Java 9或10一起使用。我按照Ralf Renz的建议从netbeans.apache.org中获取了NetBeans 9,并且能够将项目加载到其中,并使用JDK 10进行编译。当我在NetBeans中运行它时,我得到了相同的缺少JavaFX应用程序类feedmeclient.FeedMeClient错误:)

    此外,IDE还在努力扫描类并在您选择要使用的项目的主类的位置弹出弹出窗口。 对话框窗口将被卡住,找不到任何类。 该项目没有任何错误,它进行了编译和构建。 然后,我开始研究使用的库。 我使用了一个我也用Java 8构建的库,这个名为DataLayer.jar的库正在使用JAXB访问文件来写入和读取XML文件。

  2. 现在的主要问题是:JAXB以前一直在Java发行版内部,但是在Java 10中,他们删除了它:((可笑的是IDE不会抱怨,因为用作库的DataLayer.jar已经被编译了,我猜测它已经包含了所需的类,但不知何故,有什么东西在人仍下落不明,因为当我将单独跑DataLayer.jar,那么它就会崩溃,因为一些JAXB符号无法得到解决。在运行时,它混淆“ 缺少JavaFX应用程序类feedmeclient.FeedMeClient即使与问题的真正原因无关也被抛出。

好消息是,您可以将JAXB作为库并在项目中使用。 完成此操作后,一切恢复正常。

暂无
暂无

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

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