ci7*_*en4 2 macos javafx java-11 macos-mojave
我正在尝试在我的 macOS 10.14 系统上运行mqtt-spy-1.0.0.jar,但它无法启动,返回以下错误消息:

据开发人员称,如果系统上缺少 JavaFX,则会导致此问题。
如下所示,我的系统上安装了最新版本的 Oracle JDK,但是,我知道 Oracle 已从 v11 中的 JDK 中排除了 JavaFX。
所以我从 GluonHQ下载了JavaFX并按照他们的说明开始。
尽管在 ~/.bash_profile 中正确设置了两个必需的变量,但 mqtt-spy-1.0.0.jar 仍然返回第一个屏幕截图中显示的错误消息......
我还需要做什么或者我需要做什么不同的事情来运行 mqtt-spy?
已经有一个关于此的问题,但没有解决方案。
我还没有真正尝试让它完全工作,但这些是在 Java 11 上运行需要 JavaFX 11 但不捆绑它的 jar 所需的步骤:
转到OpenJFX 文档并阅读有关如何开始使用 JavaFX 11 的信息。
从这里下载适用于您平台的 JavaFX 11 。解压
假设您已安装 Java 11,并设置为 JAVA_HOME:
使用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
Run Code Online (Sandbox Code Playgroud)
运行此程序后,您将收到此异常:
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)
Run Code Online (Sandbox Code Playgroud)
从 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
Run Code Online (Sandbox Code Playgroud)
我得到:
警告:但这并不意味着该应用程序将完全运行。鉴于它是一个 Java 8 应用程序,JavaFX 11 中发生了一些变化,主要与控件外观有关。如果应用程序使用的是私有 API (com.sun.javafx....),那现在将不起作用,因为它已被移动到公共包中,或者因为模块无法访问它。对于后者,您可以使用--add-opens,但对于前者,除了将应用程序依赖项更新为 Java 9+ 之外,没有其他解决方案。
| 归档时间: |
|
| 查看次数: |
1977 次 |
| 最近记录: |