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

时间:2018-08-01 08:23:44

标签: java class javafx compatibility

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

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

java版本“ 10.0.2” 2018-07-17 Java TM SE Runtime Environment 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,则是 IT工作: “ 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 个答案:

答案 0 :(得分:0)

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

  1. Netbeans 8.2似乎不适用于Java 9或10。我按照Ralf Renz的建议从netbeans.apache.org中获取了NetBeans 9,并且能够将项目加载到其中,并使用JDK10。令人惊讶的是,当我在NetBeans中运行它时,我得到了相同的缺少JavaFX应用程序类feedmeclient.FeedMeClient 错误:)

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

  2. 现在是主要问题:直到现在,JAXB一直都在Java发行版内部,但是在Java 10中,他们删除了它:((((有趣的是IDE不会抱怨,因为DataLayer.jar用作库已被编译,并且我猜它已经包含了所需的类。但是不知何故,仍然缺少一些东西,因为当我单独运行DataLayer.jar时,它将崩溃,因为某些JAXB符号无法解析。在运行时,令人困惑的“ <

  3. ,即使JavaFX应用程序类feedmeclient.FeedMeClient 丢失,也不会引发该问题。

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