我使用eclipse kepler和java SE 1.8 jdk系统库但是当我使用任何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")
,但这仍然无法解决未知原因并隐藏我可能需要查看的所有其他限制警告
答案 0 :(得分:30)
答案 1 :(得分:7)
简单的方法是安装e(fx)clipse - Eclipse的插件以支持JavaFX:
原始信息可在此处找到:https://www.eclipse.org/efxclipse/install.html#for-the-lazy
答案 2 :(得分:4)
您可以在以下设置中选择ignore
:
Windows -> Preferences -> Java -> Compiler -> Errors/Warnings
(Project) Properties -> Java Compiler -> Errors/Warnings
使用过滤器查找"Forbidden reference"
Forbidden reference (access rules)
:将其更改为&#34; ignore
&#34;
答案 3 :(得分:3)
添加访问规则以允许访问javafx/**
。
另见答案:https://stackoverflow.com/a/32062263/1060350
就我所知,我认为这是Eclipse中的一个错误。我也找不到在Eclipse中全局配置它的方法,但是你需要为每个项目重做它。
导航到项目设置,构建路径,库,JRE。点击“访问规则”,通常应该“没有规则定义”。添加新规则:“可访问”,然后输入模式“javafx/**
”。
这告诉Eclipse Java编译器javafx.*
是允许使用的官方API,因此警告就会消失。
显然,仅允许访问javafx比忽略警告要好得多。
*
不起作用的原因是因为您没有读取通配符定义。在访问规则中,*
只匹配一次,您需要**
才能在任何深度匹配。即*
将允许访问javafx.SomeClass
但不能访问javafx.scene.SomeClass
...
答案 4 :(得分:2)