在Eclipse Kepler(SR2)插件中使用jfxrt.jar

时间:2014-04-04 09:01:20

标签: java eclipse javafx osgi eclipse-rcp

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

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

当我尝试访问jfxrt类时,我会收到错误(Discouraged Access)。我试图通过创建一个访问规则(* / )到我的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

对我有什么建议吗?

2 个答案:

答案 0 :(得分:1)

  1. 限制访问 - 是的原因是JavaFX在扩展类路径上,因此它被Eclipse视为VM的实现细节
  2. 运行时问题是因为JavaFX包不是任何EE的一部分,因此您无法在OSGi-Env中找到它们
  3. 在SWT-IDE插件中使用启动JavaFX-Application是没有意义的,你使用FXCanvas会导致你的下一个问题,因为它根本不在任何类路径上,因为它依赖于SWT(你发现它在你的jre / lib / jfxswt.jar)
  4. 我的建议是:帮自己一个忙,并安装e(fx)clipse,例如:您可以从http://efxclipse.bestsolution.at/install.html获取一个一站式下载,或者使用http://www.efxclipse.org/install.html中的更新站点,如果您想使用纯粹的fx(不涉及swt),请关注https://wiki.eclipse.org/Efxclipse/Tutorials/Tutorial2,然后{{3} }和https://wiki.eclipse.org/Efxclipse/Tutorials/Tutorial3可能对你很有意思

答案 1 :(得分:0)

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

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

来自this SO answer

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