Eclipse Oxygen 中对 JavaFX 类 的访问限制

Access restriction on JavaFX classes in Eclipse Oxygen

我在 Ubuntu 17.04 中使用 Eclipse Oxygen 4.7.0 和 Oracle JDK 8u144。

在包 javafx.* 中引用 JavaFX 类 的任何代码,例如javafx.application.Application 被(错误地)报告为错误

Access restriction: The type 'ScrollPane' is not API (restriction on required library '/opt/jdk1.8.0_144/jre/lib/ext/jfxrt.jar')

这似乎与 "Java System Library" JavaSE-1.8 有关。 jfxrt.jar 有 "Access rules" 你可以在 Properties -> Java Build Path 中查看,这些只允许 javax/, java/、org.w3c.*等,其中none甚至在jfxrt.jar中。

我可以通过两种不同的方式解决这个问题

这两种方法都不是理想的,因为我有大量的 Eclipse 项目需要调整,并且希望启用禁止的引用检查以捕获真正的错误。

请注意,通过 Eclipse 中包含的标准 Gradle 导入插件导入项目时,这也是一个问题。

是否有可能通过 Gradle 配置来避免此问题,或者已知的 bug/feature 将被修复?

这在 Eclipse Bug 431067 中进行了详细讨论。

除了问题中的解决方法外,最简单的是安装 e(fx)clipse 插件 - https://www.eclipse.org/efxclipse/install.html

这会自动在 JDK 中配置必要的访问限制。