java - 在 JRE 8 中使用 JavaFX, “Access restriction” 错误

标签 java eclipse javafx java-8

当尝试在我的新 java 8 项目中使用 javafx 相关类时,我从 eclipse 收到访问限制错误。到目前为止,我能找到的唯一“解决方案”是告诉 eclipse 忽略访问限制,但我对此并不满意。 错误示例:

Access restriction: The type Pane is not accessible due to 
restriction on required library C:\Program Files\Java\jre8_0\lib\ext\jfxrt.jar

我正在使用 Eclipse Kepler 以及适用于 java 8 的 Eclipse JDT 补丁。

这似乎是一个与 JavaFX 不是 JavaSE 执行环境的一部分有关的问题。

根据http://en.wikipedia.org/wiki/JavaFX,我现在很困惑javaFX 是 JavaSE 的一部分。 Eclipse 是否有可能无法识别它是 javaSE 的一部分?

最佳答案

我将在这里添加一个答案,只是为了提供我认为最简单的方法。在我的 Eclipse 设置中,我安装了 e(fx)clipse,它为此提供了一种修复方法,并提供了许多有用的开发功能,如果您正在编写 JavaFX 应用程序,您几乎肯定会需要这些功能。这可能是最实用的方法。如果由于某种原因您不需要该插件,则此答案中概述的解决方案将以最少的其他副作用解决该问题。

正如其他答案中所指出的,默认情况下,Eclipse 不允许访问 jre/lib/ext 目录中的 jar 文件中的类,因为不能保证这些类存在于所有 Java 平台上。如果您正在编写 JavaFX 8 应用程序,则假设您所在的平台上的 lib/ext 位置提供了 jfxrt.jar。

因此,对此问题的最小修复是允许访问此 jar 文件中的类(并且仅在此 jar 文件中)。为此,右键单击该项目并打开项目属性对话框。在左侧 Pane 中选择“构建路径”,然后选择“库”选项卡。您将看到“JRE System Library”条目。展开该条目,您将看到一个“访问规则”子条目:

enter image description here

选择“访问规则”条目并单击“编辑”。单击“添加”。

enter image description here

在“分辨率”下,选择“可访问”,然后在“规则模式”下输入 javafx/**:

enter image description here

单击“确定”退出所有对话框。

此设置将允许访问以 javafx. 开头的任何包中的所有类,但将为所有其他类保留 ext 文件夹中的规则,从这个意义上来说,这是“最小”的。

同样,您可能真正想做的是安装 e(fx)clipse 插件,但据我所知,这是对 Eclipse 设置副作用最小的解决方案。

关于java - 在 JRE 8 中使用 JavaFX, “Access restriction” 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36129271/

相关文章:

java - 时间戳格式添加 17 小时

java - 自动删除已删除对象的对象

java - 如何传输用 Eclipse 编写的项目?

java - 即使声明为最终边界也会更新

java - 如何从本地目录加载resources.properties,而不是Java中的JAR?

java - 当变量在父类(super class)中 protected 时,子类如何将变量设为私有(private)?

java - 验证对象的最佳实践

Android NDK 位置在 MAC 的首选项中无效

java - 将 Eclipse 生成的 GUI 表单导入 IntelliJ

java - 单击 JavaFX 按钮上的“删除卡”