我试图在我的mqtt-spy-1.0.0.jar 10.14系统上运行macOS,但是它不会启动,返回以下错误消息:

据开发人员介绍,如果JavaFX不见了出现在系统上,就会导致这一问题。
我的系统上安装了最新版本的Oracle,如下所示,但是,我知道Oracle已经将JavaFX排除在v11中的JDK之外。

所以我下载了JavaFX来自GluonHQ并遵循了他们的指令关于如何开始。

尽管在~/..bash_profile中正确设置了这两个必需变量,但mqtt-间谍-1.0.jar仍然返回第一个屏幕截图中显示的错误消息.
为了运行mqtt间谍,我还需要做些什么,或者需要做些什么?
发布于 2018-12-02 22:01:39
关于这一点,已经有了一个问题文件,但没有一个解决方案。
我还没有真正尝试让它完全工作,但以下是在Java11上运行jar所需的步骤,该jar需要JavaFX 11,但不绑定它:
使用mqtt-spy-1.0.0.jar (作为最新的发布),您可以运行:
java --module-path /path-to/javafx-sdk-11.0.1/lib \
    --add-modules javafx.controls,javafx.fxml -jar mqtt-spy-1.0.0.jar运行此程序后,您将得到以下异常:
Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)因为Java 9,JAXB也不是JDK的一部分。因此您可以添加尝试从这里下载依赖项,并将其添加到类路径中。但是这需要一些迭代(还有一些其他必需的jars,请参阅这)。
那么,为什么不使用最新的快照可用,其中包括依赖项:mqtt-spy-1.0.1-beta-b18-jar-with-dependencies.jar。
在这方面:
java --module-path /path-to/javafx-sdk-11.0.1/lib \
    --add-modules javafx.controls,javafx.fxml -jar mqtt-spy-1.0.1-beta-b18-jar-with-dependencies.jar我得到:

警告:但这并不意味着应用程序将完全正常工作。考虑到它是Java8应用程序,JavaFX 11中有一些东西发生了变化,主要与控件外观有关。如果应用程序使用的是私有API (com.sun.javafx.),那么现在就不能工作了,因为它已经被移动到公共包中,或者因为模块无法访问它。对于后者,您可以使用--add-opens,但对于前者,除了将应用程序依赖项更新为Java9+之外,没有其他解决方案。
https://stackoverflow.com/questions/53584781
复制相似问题