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

20

我使用带有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"),但这仍然不能解决未知原因并隐藏了我可能需要查看的所有其他限制警告。


1
可能是在JRE 8中使用JavaFX的重复问题。 - Hilikus
1
你的通配符语法有误。你使用了*,这是非递归的,你应该使用**,而且你只需要使用javafx/**。请参见下面的答案。 - Has QUIT--Anony-Mousse
5个回答

34

我可以通过重新配置Java库来解决这个问题。例如,明确选择Oracle JDK 就可以达到预期效果。

配置构建路径

编辑Java库

明确选择JDK


这个确切的技巧正如所描述的一样对我起作用了。 - systemcpro

8
安装e(fx)clipse插件是使用JavaFX的简单方法:
  1. 选择“帮助” -> “安装新软件”
  2. 点击添加按钮添加以下网站:
  3. 点击OK
  4. 在“工作区”下拉列表中,选择最近添加的网站“efxclipse”
  5. 选中“e(fx)clipse - install”复选框以安装该选择的所有组件
  6. 继续下一步完成安装
  7. 重启Eclipse。如果它仍然无法识别JavaFX库,请再次重启。
原始信息可在此处找到:https://www.eclipse.org/efxclipse/install.html#for-the-lazy

4
你可以在以下设置中选择“忽略”:

ignore

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

使用过滤器查找"Forbidden reference"

禁止引用(访问规则):将其更改为"忽略"

enter image description here


7
谢谢您的帮助,但如果我能修复警告的原因而不是将其抑制,那会更好。 - Japheth Ongeri - inkalimeva
4
我强烈反对那种解决方案,并且它不应该被接受。你将改变所有库的设置,而不仅仅是JavaFX。应该确保按照下面的答案所示在构建路径中使用JDK... - mmey
1
不要压制警告,只需添加正确的访问规则。请参见下面的新答案。 - broc.seib

4

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

另请参见此答案:https://dev59.com/GWEh5IYBdhLWcg3wGwKO#32062263

据我所知,这在我的观点中是Eclipse的一个bug。我也找不到在Eclipse中全局配置的方法,但您需要为每个项目重新执行此操作。

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

这告诉Eclipse Java编译器,javafx.*是您被允许使用的官方API,因此警告消失了。

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

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


2

javafx 添加访问规则。

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

  • 展开JRE系统库
  • 选择访问规则,点击编辑...按钮
  • 点击添加...
  • 选择分辨率:可访问
  • 设置规则模式:javafx/**
  • 点击确定
  • 点击确定

add access to lib for jfxrt


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接