当我在新的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和Eclipse 8的Eclipse JDT补丁。
这似乎与JavaFX不是JavaSE执行环境的一部分有关。
根据http://en.wikipedia.org/wiki/JavaFX,我现在很困惑javaFX是JavaSE的一部分。是否有可能Eclipse没有意识到它是javaSE的一部分?
答案 0 :(得分:117)
我将在这里再添加一个答案,只是为了提供我认为最简单的方法。在我的Eclipse设置中,我安装了e(fx)clipse,它为此提供了一个修复程序,并提供了许多有用的开发功能,如果您正在编写JavaFX应用程序,几乎肯定需要这些功能。这可能是最实用的方法。如果由于某种原因你不想要这个插件,这个答案中概述的解决方案将以最少的其他副作用解决问题。
正如其他答案中所指出的,默认情况下,Eclipse不允许访问jre / lib / ext目录中jar文件中的类,因为这些不保证在所有Java平台上都存在。如果您正在编写JavaFX 8应用程序,那么假设您处于lib / ext位置中可用的jfxrt.jar的平台上。
因此 minimal 修复此问题是为了允许访问此jar文件中的类(并且仅在此jar文件中)。要执行此操作,请右键单击项目并调出项目属性对话框。选择"构建路径"在左侧窗格中,选择" Libraries"标签。您将看到一个" JRE系统库"条目。展开该条目,您将看到"访问规则"子条目:
选择"访问规则"输入并单击"编辑"。点击"添加"。
在" Resolution"下,选择" Accessible",然后在"规则模式"下,输入javafx/**
:
单击“确定”退出所有对话框。
此设置将允许访问以javafx.
开头的任何包中的所有类,但会将规则保留在所有其他类的ext文件夹中,并且是" minimal"从那个意义上说。
同样,您可能真正想要的是安装e(fx)clipse插件,但据我所知,这是Eclipse设置中副作用最少的解决方案。
答案 1 :(得分:62)
从Eclipse的角度来看,错误是完全正确的,因为JavaFX来自扩展类路径,并且在所有Java8 VM上都不可用(例如ibm!)。
如前所述,您可以通过添加访问规则或IMHO来抑制这些警告,最好的解决方案是安装e(fx)clipse,它会为您自动执行此操作,甚至为您提供JavaFX CSS和FXML的工具。
获取一个包装答案 2 :(得分:18)
我通过删除JDK并将其读取到构建路径来解决了这个问题。不过,不要问我为什么会这样。
答案 3 :(得分:9)
简单的方法是安装e(fx)clipse - Eclipse的插件以支持JavaFX:
原始信息可在此处找到:https://www.eclipse.org/efxclipse/install.html#for-the-lazy
答案 4 :(得分:7)
我通过仔细使用Eclipse项目的构建路径解决了这个问题。
这样做使Eclipse将jfxrt.jar视为常规的第三方JAR文件。顺序很重要,因此这优先于JRE系统库中的条目。它是相同的实际JAR文件,但Eclipse看到它的方式不同。
您可能希望更改任何运行配置,以便它不会使用“导出的”#39; jfxrt.jar的版本;但实际上,这并不会有所作为。
我用Java8和Eclipse Luna完成了这项工作;但我相信校长可以使用Java和Eclipse的任何组合。
答案 5 :(得分:5)
在图书馆
下注意:确保在Eclipse / Preferences(不是项目)/ Java / Installed JRE中,jdk指向JDK文件夹而不是JRE C:\ Program Files \ Java \ jdk1.8.0_74 < /强>
答案 6 :(得分:3)
请按以下步骤操作:
1.将jfxrt.jar(来自installtion文件夹)添加为&#34;外部JAR文件&#34;在&#39;图书馆&#39;标签
这对我有用
答案 7 :(得分:3)
我知道这已经得到了解答,但我发现建议的解决方案很笨拙。
答案 8 :(得分:1)
正如James_D已经建议我将访问规则添加到我的类路径文件中。我暂时卸载了e(fx)clipse插件,因为它有一个css验证错误(参见How to disable css warning "Unknown property" in Eclipse Mars?)。
这是我在JRE容器的类路径文件中的条目:
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
<accessrules>
<accessrule kind="accessible" pattern="javafx/**"/>
<accessrule kind="accessible" pattern="com/sun/javafx/**"/>
</accessrules>
</classpathentry>
答案 9 :(得分:1)
我遇到了同样的问题。我使用了James_D的解决方案,但他的确切解决方案对我不起作用。但是使用**/javafx/**
代替javafx/**
解决了我的问题。希望有所帮助。
PS:我会在James_D的解决方案中将其作为评论发布,但我刚刚注册并且没有足够的“声誉”这样做。
答案 10 :(得分:0)
步骤1:导航到您的jfxrt.jar。 C:\ Program Files \ Java \ jre1.8.0_111 \ lib \ ext
步骤2复制文件jfxrt.jar
步骤3:转到Eclipse,创建一个这样的新文件夹: [创建文件夹名称lib以放入我们的jfxrt.jar文件] [2] [2]:https://i.stack.imgur.com/YsJ5S.png
步骤4:选择lib文件夹,然后按CTRL + V粘贴jfxrt.jar [粘贴你的jfxrt.jar] [1] [1]:https://i.stack.imgur.com/Ljogu.png
步骤5:右键单击jfxrt.jar并设置为Build Path。