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
中。
我可以通过两种不同的方式解决这个问题
- 更改首选项 -> Java -> 编译器 -> 错误和警告 -> 弃用和限制 API -> 禁止引用(访问规则)不是错误。
- 通过属性 -> Java 构建路径 -> JRE 系统库 -> 编辑
手动将系统库从 "JavaSE-1.8" 更改为 "Workspace default JRE"
这两种方法都不是理想的,因为我有大量的 Eclipse 项目需要调整,并且希望启用禁止的引用检查以捕获真正的错误。
请注意,通过 Eclipse 中包含的标准 Gradle 导入插件导入项目时,这也是一个问题。
是否有可能通过 Gradle 配置来避免此问题,或者已知的 bug/feature 将被修复?
这在 Eclipse Bug 431067 中进行了详细讨论。
除了问题中的解决方法外,最简单的是安装 e(fx)clipse 插件 - https://www.eclipse.org/efxclipse/install.html。
这会自动在 JDK 中配置必要的访问限制。
我在 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
中。
我可以通过两种不同的方式解决这个问题
- 更改首选项 -> Java -> 编译器 -> 错误和警告 -> 弃用和限制 API -> 禁止引用(访问规则)不是错误。
- 通过属性 -> Java 构建路径 -> JRE 系统库 -> 编辑 手动将系统库从 "JavaSE-1.8" 更改为 "Workspace default JRE"
这两种方法都不是理想的,因为我有大量的 Eclipse 项目需要调整,并且希望启用禁止的引用检查以捕获真正的错误。
请注意,通过 Eclipse 中包含的标准 Gradle 导入插件导入项目时,这也是一个问题。
是否有可能通过 Gradle 配置来避免此问题,或者已知的 bug/feature 将被修复?
这在 Eclipse Bug 431067 中进行了详细讨论。
除了问题中的解决方法外,最简单的是安装 e(fx)clipse 插件 - https://www.eclipse.org/efxclipse/install.html。
这会自动在 JDK 中配置必要的访问限制。