首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >macOS:如何正确地安装JavaFX以运行mqtt间谍?

macOS:如何正确地安装JavaFX以运行mqtt间谍?
EN

Stack Overflow用户
提问于 2018-12-02 21:26:24
回答 1查看 2.2K关注 0票数 2

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

据开发人员介绍,如果JavaFX不见了出现在系统上,就会导致这一问题。

我的系统上安装了最新版本的Oracle,如下所示,但是,我知道Oracle已经将JavaFX排除在v11中的JDK之外。

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

尽管在~/..bash_profile中正确设置了这两个必需变量,但mqtt-间谍-1.0.jar仍然返回第一个屏幕截图中显示的错误消息.

为了运行mqtt间谍,我还需要做些什么,或者需要做些什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-02 22:01:39

关于这一点,已经有了一个问题文件,但没有一个解决方案。

我还没有真正尝试让它完全工作,但以下是在Java11上运行jar所需的步骤,该jar需要JavaFX 11,但不绑定它:

  1. 请访问OpenJFX文档,了解如何开始使用JavaFX 11。
  2. 从JavaFX下载平台的这里 11。解拉链
  3. 如果安装了Java 11,并将其设置为JAVA_HOME:

使用mqtt-spy-1.0.0.jar (作为最新的发布),您可以运行:

代码语言:javascript
运行
复制
java --module-path /path-to/javafx-sdk-11.0.1/lib \
    --add-modules javafx.controls,javafx.fxml -jar mqtt-spy-1.0.0.jar

运行此程序后,您将得到以下异常:

代码语言:javascript
运行
复制
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

在这方面:

代码语言:javascript
运行
复制
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+之外,没有其他解决方案。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53584781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档