macOS:如何正确安装 JavaFX 来运行 mqtt-spy?

标签 macos javafx macos-mojave java-11

我正在尝试运行 mqtt-spy-1.0.0.jar在我的 macOS 10.14 系统上,但它无法启动,返回以下错误消息: enter image description here

根据开发者的说法,这个问题是由 JavaFX is missing 引起的。在系统上。

我的系统上安装了最新版本的 Oracle JDK,如下所示,但是,我知道 Oracle 在 v11 中已将 JavaFX 从 JDK 中排除。 enter image description here 所以我下载了JavaFX from GluonHQ并按照他们的指示 on how to get startedenter image description here 尽管在 ~/.bash_profile 中正确设置了两个必需的变量,mqtt-spy-1.0.0.jar 仍然返回第一个屏幕截图中显示的错误消息...

我还需要做什么或者需要做什么不同的事情才能运行 mqtt-spy?

最佳答案

已经有一个issue对此提出了相关要求,但没有解决方案。

我并没有真正尝试让它完全工作,但这些是在需要 JavaFX 11 但不捆绑它的 Java 11 上运行 jar 所需的步骤:

  1. 转到OpenJFX docs并了解如何开始使用 JavaFX 11。

  2. here 下载适合您平台的 JavaFX 11 。解压它

  3. 假设您已安装 Java 11,并设置为 JAVA_HOME:

使用 mqtt-spy-1.0.0.jar (最新 release ),您可以运行:

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 的一部分。所以你可以添加尝试从here下载依赖)并将其添加到类路径中。但这需要一些迭代(还有一些其他必需的 jar,请参阅 this)。

那么为什么不使用最新的快照 available ,其中包括依赖项:mqtt-spy-1.0.1-beta-b18-jar-with-dependency.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

我得到:

mqtt-spy on 11

警告:但这并不意味着该应用程序将完全运行。鉴于它是一个 Java 8 应用程序,JavaFX 11 中发生了一些变化,主要与控件皮肤相关。如果应用程序使用私有(private) API (com.sun.javafx...),那么现在将无法工作,因为它已被移至公共(public)包,或者因为模块无法访问它。对于后者,您可以使用 --add-opens,但对于前者,除了将应用程序依赖项更新到 Java 9+ 之外,没有其他解决方案。

关于macOS:如何正确安装 JavaFX 来运行 mqtt-spy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53584781/

相关文章:

objective-c - 回车 ("\r") 在 gdb 输出中的 C/Objective-C 中不起作用

macos - Gnuplot:向输出表添加一些用户数据列?

swift - NSOutlineView,使用项目 : AnyObject

ios - 升级到 Xcode 10 + Mac OS Mojave 后无法调试所选 View

objective-c - 更新到 macOS Mojave 后 [NSWindow orderFrontRegardless] 崩溃

c++ - Qt 4.8 : loading SQL drivers from shared library/DLL

JavaFx Webview HTML5 拖放

javafx - 如何最小化靠近系统托盘的 javafx 阶段?

javafx - 选定文本上的悬停效果

node.js - 无法让此 NPM 命令在 Mojave 上运行