在JRE 8中使用JavaFX
当试图在我的新的Java 8项目中使用javafx相关的类时,我得到了来自eclipse的访问限制错误。 到目前为止,我所能find的唯一“解决scheme”是告诉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 JDK的Eclipse JDT补丁。
这似乎是与JavaFX不是JavaSE执行环境的一部分相关的问题。
根据http://en.wikipedia.org/wiki/JavaFX,我现在很困惑,javaFX是JavaSE的一部分。 Eclipse有没有可能认识到它是javaSE的一部分?
从Eclipse的angular度来看,错误是完全正确的,因为JavaFX来自扩展类path,并且在所有Java8虚拟机(例如ibm!)上都不可用。
如上所述,您可以通过添加访问规则或恕我直言,禁止这些警告最好的解决scheme是安装e(fx)剪辑,这会自动为您和旁边,甚至为您提供了JavaFX CSS和FXML的工具。
我将在这里添加一个答案,只是为了提供我认为是最小的方法。 在我的Eclipse设置中,我安装了e(fx)clipse,为此提供了一个修复,并提供了许多有用的开发function,如果您正在编写JavaFX应用程序,那么您几乎可以肯定需要这些function。 这可能是最实际的方法。 如果由于某种原因,你不需要这个插件,这个答案中概述的解决scheme将解决与其他副作用最小的问题。
正如在其他答案中指出的那样,Eclipse默认情况下不允许访问jre / lib / ext目录中jar文件中的类,因为这些不能保证在所有Java平台上都存在。 如果您正在编写JavaFX 8应用程序,则假定您位于lib / ext位置中可用的jfxrt.jar平台上。
所以最小的修复方法是允许访问这个jar文件中的类(并且只能在这个jar文件中)。 为此,请右键单击该项目并调出项目属性对话框。 在左侧窗格中select“Build Path”,然后select“Libraries”选项卡。 你会看到一个“JRE系统库”条目。 展开该条目,您将看到一个“访问规则”子条目:
select“访问规则”条目,然后点击“编辑”。 点击“添加”。
在“解决scheme”下,select“可访问”,然后在“规则模式”下inputjavafx/**
:
点击确定退出所有的对话框。
这个设置将允许访问javafx.
开始的任何包中的所有类javafx.
,但会保留所有其他类的ext文件夹的规则,在这个意义上是“最小的”。
再一次,你可能真正想要做的是安装e(fx)clipse插件,但据我所知,这是对Eclipse设置的副作用最小的解决scheme。
我通过删除JDK并将其读取到构buildpath来解决了问题。 不过,不要问我为什么这么做。
我已经通过仔细使用Eclipse项目的构buildpath解决了这个问题。
- 调出你的应用程序项目的属性,并select“构buildpath”部分。
- 将“jre8_0 \ lib \ ext \ jfxrt.jar”添加为“库”选项卡中的“外部JAR文件”。
- 在“订单/导出”选项卡中,确保这个jfxrt.jar是第一个在列表中。
这样做是让Eclipse将jfxrt.jar看作是一个普通的第三方JAR文件。 顺序非常重要,因此优先于JRE系统库中的条目。 这是相同的实际JAR文件,但Eclipse看到它不同。
您可能希望更改任何运行configuration,以便不使用jfxrt.jar的“导出”版本; 但实际上这不会有什么区别。
我已经用Java8和Eclipse Luna完成了这个任务; 但是委托人肯定会和Java和Eclipse的任何组合一起工作。
简单的方法是安装e(fx)clipse – Eclipse的插件来支持JavaFX:
- select帮助 – >安装新软件
- 点击添加button添加以下网站:
- 名称:efxclipse
- 位置: http : //download.eclipse.org/efxclipse/updates-released/1.2.0/site
- 点击OK
- 在“使用”中,select最近添加的站点“efxclipse”
- 选中checkbox“e(fx)clipse – install”安装此select的所有组件
- 转到下一步以完成安装
- 重新启动你的Eclipse。 如果仍然无法识别JavaFX库,请重新启动它。
原始信息可以在这里find: https : //www.eclipse.org/efxclipse/install.html#for-the-lazy
- 转到当前项目的构buildpath
在图书馆
- select“ JRE系统库 [jdk1.8xxx]”
- 点击编辑
- 并select“工作区默认JRE(jdk1.8xx)” 或“备用JRE”
- 点击完成
- 点击OK
注意:确保在Eclipse / Preferences(不是项目)/ Java / Installed JRE中,jdk指向JDK文件夹而不是JRE C:\ Program Files \ Java \ jdk1.8.0_74
按着这些次序:
1.将“jfxrt.jar”(从installtion文件夹中)添加为“库”选项卡中的“外部JAR文件”。
- 在“订单/导出”选项卡中,确保这个jfxrt.jar是第一个在列表中。
这对我工作
我知道这已经被回答了,但是我觉得这个解决scheme笨重。
- 我不想安装插件只是为了避免我认为是无效的错误。
- 将jfxrt.jar添加为外部jar将会起作用,但是如果您计划执行导出,那么jfxrt.jar也会被导出,这是一个坏主意。 可能不是你想要的。
另外一个select
在“火星”版本(可能还有更早版本)中,您可以禁用访问限制错误。 下
Java->编译器 – >错误/警告视图
和
“弃用和限制的API”
你可以设置“禁止引用(访问规则)”来忽略。
正如James_D已经build议我将访问规则添加到我的类path文件。 我暂时卸载了e(fx)clipse插件,因为它有一个cssvalidation错误(请参阅Eclipse Mars中的如何禁用css警告“未知属性” )。
这是我在JRE容器的类path文件中的条目:
<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>
我有同样的问题。 我使用了James_D的解决scheme,但是他的确切解决scheme并不适合我。 但使用**/javafx/**
而不是javafx/**
解决了我的问题。 希望有所帮助。
PS:我会在James_D的解决scheme中发表这个评论,但是我只是注册了,并没有足够的“声誉”来这样做。
步骤1:导航到您的jfxrt.jar。 C:\ Program Files \ Java \ jre1.8.0_111 \ lib \ ext
第2步复制文件jfxrt.jar
第3步:转到Eclipse,创build一个新的文件夹,如下所示:[创build文件夹名称lib来放置我们的jfxrt.jar文件] [2] [2]: https ://i.stack.imgur.com/YsJ5S.png
第4步:selectlib文件夹,然后按CTRL + V粘贴jfxrt.jar [粘贴您的jfxrt.jar] [1] [1]: https ://i.stack.imgur.com/Ljogu.png
第5步:右键单击jfxrt.jar并设置为Build Path。