Eclipse 对 jfxrt.jar 类的访问限制发出警告

Posted

技术标签:

【中文标题】Eclipse 对 jfxrt.jar 类的访问限制发出警告【英文标题】:Eclipse gives warning on access restriction for jfxrt.jar classes 【发布时间】:2014-09-04 18:04:06 【问题描述】:

我正在使用带有 java SE 1.8 jdk 系统库的 eclipse kepler,但是当我使用任何 javafx 类或方法时,eclipse 会发出类似 Access restriction: The type 'TableColumn<?,?>' is not API (restriction on required library 'C:\Program Files\Java\jdk1.8.0_05\jre\lib\ext\jfxrt.jar') 的警告。

我尝试向系统库添加访问规则,以允许使用通配符 * 访问库中的所有 jar,但警告仍然存在。我也在使用 Maven 来构建项目。 该代码有效,但警告令人讨厌,并且在我编写代码时影响了可读性。任何帮助表示赞赏。

编辑:我还尝试在课程开始时添加@SuppressWarnings("restriction"),但这仍然不能解决未知原因并隐藏我可能需要查看的所有其他限制警告

【问题讨论】:

Using JavaFX in JRE 8 的可能重复项 您的通配符语法错误。您使用了非递归的*,您打算使用**,而您应该只使用了javafx/**。请参阅下面的答案。 【参考方案1】:

javafx添加访问规则。

右键单击您的项目 > 属性 > Java 构建路径 > 库选项卡,然后:

扩展 JRE 系统库 选择访问规则,点击Edit...按钮 点击Add... 选择分辨率:Accessible 设置规则模式:javafx/** 点击OK 点击OK

【讨论】:

【参考方案2】:

添加访问规则以允许访问javafx/**

另请参阅此答案:https://***.com/a/32062263/1060350

据我所知,我认为这是 Eclipse 中的一个错误。我也找不到在 Eclipse 中全局配置它的方法,但是您需要为每个项目重做它。

导航到项目设置、构建路径、库、JRE。单击通常应具有“未定义规则”的“访问规则”。添加新规则:“Accessible”,并输入模式“javafx/**”。

这会告诉 Eclipse Java 编译器 javafx.* 是您可以使用的官方 API,因此警告会消失。

显然,允许只访问 javafx 比忽略警告要好得多。

* 不起作用的原因是您没有阅读通配符定义。在访问规则中,* 只匹配一次,需要** 匹配任意深度。 IE。 * 将允许访问 javafx.SomeClass 但不允许访问 javafx.scene.SomeClass...

【讨论】:

【参考方案3】:

您可以在以下设置中选择ignore

Windows -> Preferences -> Java -> Compiler -> Errors/Warnings
(Project) Properties -> Java Compiler -> Errors/Warnings

使用过滤器查找"Forbidden reference"

Forbidden reference (access rules) :将其更改为“ignore

【讨论】:

感谢您的帮助,但如果我可以解决警告的原因而不是抑制它会更好。 我强烈反对这种解决方案,它不应该被接受。您将更改所有库的设置,而不仅仅是 JavaFX。应确保在构建路径中使用 JDK,如下面的答案所示... 与其抑制警告,不如添加适当的访问规则。请参阅下面的新答案。【参考方案4】:

我可以通过重新配置 Java 库来解决这个问题。例如,显式选择 Oracle JDK 就可以了。

【讨论】:

这种精确的技术对我来说完全符合描述【参考方案5】:

简单的方法是安装 e(fx)clipse - Eclipse 支持 JavaFX 的插件:

    选择帮助 -> 安装新软件 单击添加按钮添加以下站点: 名称:efxclipse 位置:http://download.eclipse.org/efxclipse/updates-released/1.2.0/site 点击确定 在“使用”下拉列表中,选择最近添加的站点“efxclipse” 选中复选框“e(fx)clipse - install”以安装此选择的所有组件 转到下一步以完成安装 重新启动 Eclipse。如果仍然无法识别 JavaFX 库,请重新启动它。

原始信息可以在这里找到:https://www.eclipse.org/efxclipse/install.html#for-the-lazy

【讨论】:

以上是关于Eclipse 对 jfxrt.jar 类的访问限制发出警告的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX 运行时 JAR 文件 jfxrt.jar 在 Linux 上的位置是啥?

jfxrt.jar 不在 JDK 1.8 中?

jfxrt.jar 不在 JDK 1.8 中?

eclipse编写JavaFX

Java面向对象核心技能

限流(访问频率)组件的使用