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

使用Java 10运行.jar文件时缺少JavaFX应用程序类,java,class,javafx,compatibility,Java,Class,Javafx,Compatibility,我的问题如下: 安装Java10后,我无法运行用Java1.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.f

我的问题如下: 安装Java10后,我无法运行用Java1.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:\ProgramFiles(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

所以…经过一番努力我想我发现了问题。。。实际上还有更多的问题:

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

    IDE也在努力扫描这些类,并弹出一个弹出窗口,您可以在其中选择要使用的项目的主类。对话框窗口将被卡住,并且找不到类……嗯,真奇怪。该项目没有任何错误,编译和构建都很好。然后我开始调查所使用的库。我使用的一个库也是用Java8构建的,这个库名为DataLayer.jar,它使用JAXB访问文件来写和读XML文件

  • 现在主要的问题是:JAXB以前一直在Java发行版中,但在Java 10中,他们删除了它:(((有趣的是,IDE不会抱怨,因为用作库的DataLayer.jar已经编译好了,我想它已经包含了所需的类。但不知何故,还是缺少了一些东西,因为当我单独运行DataLayer.jar时,它会崩溃,因为一些JAXB符号无法解析。在运行时,这会导致混乱。)ing“缺少JavaFX应用程序类feedmeclient.feedmeclient”被抛出,即使它与问题的真正原因无关


  • 好的是,您可以将JAXB作为库并在项目中使用。在我这样做之后,一切都恢复正常。

    我尝试了一个简单的HelloWorld示例,使用Java 8构建它,导出为运行jar(来自eclipse)它是从Java 10.0.2开始的。我认为这不是Java的问题。你检查过你的主类是否真的在jar中吗?是的,我检查过了…主类在那里。当我调用完全相同的APP.jar时,它是用Java 8运行的。更奇怪的是,我还有其他用1.8构建的应用程序,这些应用程序可以同时使用Java 8和Java 10,是吗只使用这个APP.jar,我不知道是什么。我教过它可能与库和类路径有关,但它们看起来相似(使用的库相同,类路径相同)当我将其与似乎没有此问题的jar文件进行比较时。您可以直接从具有Java 10的Netbeans启动它吗?我无法将JDK 10添加为Netbeans中的平台。似乎所需的javafx-src.zip(平台源代码)和Javadoc文件不再位于JDK10安装文件夹中,因此Netbeans无法使用它:(.我刚刚在NetBeans网站上发现了这一点。这是否意味着IDE存在问题并且不支持Java>8?:(“安装和运行Java SE、Java EE和所有NetBeans捆绑包都需要JDK 8。NetBeans 8.2不在JDK9上运行!您可以下载独立的JDK或使用NetBeans IDE Java SE捆绑包下载最新的JDK。”