【问题标题】:Usage of jfxrt.jar in Eclipse Kepler (SR2) PluginEclipse Kepler (SR2) Plugin 中 jfxrt.jar 的使用
【发布时间】:2014-05-16 11:47:25
【问题描述】:

我正在使用 Eclipse 4 应用程序和 Java 8,目前在 Eclipse Kepler SR2 中。 有各种我不明白的陷阱,因此我正在寻求您的帮助:

当我在 Java 8 (JDK) 环境中创建新插件时,jfxrt.jar 列在我项目的 JRE 系统库中。

当我尝试访问 jfxrt 类时,我会得到一个错误(不鼓励访问)。我尝试通过为我的 JRE 系统库创建访问规则 (*/) 来解决调整构建路径的错误。 有时它有效,有时我不得不将不鼓励访问的编译器设置调整为警告。

之后,我可以访问这些类并编译它们,但是当我尝试运行(调试)时,插件仍然看不到这些类:

java.version=1.8.0
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Framework arguments:  -product de.fsch.ibot.app.product -clearPersistedState
Command-line arguments:  ... -consoleLog -clearPersistedState

!ENTRY org.eclipse.osgi 4 0 2014-04-03 09:15:12.790
!MESSAGE Application error
!STACK 1
.
.
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application

对我有什么建议吗?

【问题讨论】:

    标签: java eclipse javafx osgi eclipse-rcp


    【解决方案1】:
    1. 限制访问 - 是的,原因是 JavaFX 位于扩展类路径中,因此它被 Eclipse 视为 VM 的实现细节
    2. 运行时问题是因为 JavaFX 包不是任何 EE 的一部分,因此您无法在 OSGi-Env 中找到它们
    3. 在 SWT-IDE 插件中使用启动 JavaFX 应用程序没有意义,您使用 FXCanvas 这将导致您的下一个问题,因为它根本不在任何类路径上,因为它依赖于 SWT(您发现它在你的 jre/lib/jfxswt.jar 中)

    我的建议是:帮自己一个忙,安装 e(fx)clipse,例如您可以从http://efxclipse.bestsolution.at/install.html 获得一站式下载,或者使用http://www.efxclipse.org/install.html 的更新站点并关注https://wiki.eclipse.org/Efxclipse/Tutorials/Tutorial2,如果您想使用纯fx(不涉及swt)然后https://wiki.eclipse.org/Efxclipse/Tutorials/Tutorial3https://wiki.eclipse.org/Efxclipse/Tutorials/Tutorial4 可能很有趣给你

    【讨论】:

      【解决方案2】:

      对于受限访问,请执行以下操作:转到项目属性、java 构建路径、库。

      • 删除“JRE 系统库 [java8]”的东西
      • .. 然后再次添加 使用“添加库”-按钮 -> JRE 系统库 -> 工作区默认值(如果在您的工作区上设置为 Java 8,如果没有,请选择另一个选项)。

      this SO answer得到这个。

      令人讨厌的是,这对我有用!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多