在JRE 8中使用JavaFX,"访问限制"错误

Lex*_*con 78 java eclipse javafx java-8

当我在新的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
Run Code Online (Sandbox Code Playgroud)

我正在使用Eclipse Kepler和Java 8的Eclipse JDT补丁.

这似乎是与JavaFX不是JavaSE执行环境的一部分有关的问题.

我现在很困惑,因为根据http://en.wikipedia.org/wiki/JavaFX,javaFX是JavaSE的一部分.是否有可能Eclipse没有认识到它是javaSE的一部分?

Jam*_*s_D 125

我将在这里再添加一个答案,只是为了提供我认为最简单的方法.在我的Eclipse设置中,我安装了e(fx)clipse,它为此提供了一个修复程序,并提供了许多有用的开发功能,如果您正在编写JavaFX应用程序,几乎肯定需要这些功能.这可能是最实用的方法.如果由于某种原因你不想要这个插件,这个答案中概述的解决方案将解决问题与其他副作用最少.

正如其他答案中所指出的,默认情况下,Eclipse不允许访问jre/lib/ext目录中jar文件中的类,因为这些不保证在所有Java平台上都存在.如果您正在编写JavaFX 8应用程序,那么假设您处于lib/ext位置中可用的jfxrt.jar的平台上.

因此,对此的最小修复是允许访问此jar文件中的类(并且仅在此jar文件中).要执行此操作,请右键单击项目并调出项目属性对话框.在左窗格中选择"构建路径",然后选择"库"选项卡.您将看到"JRE系统库"条目.展开该条目,您将看到"访问规则"子条目:

在此输入图像描述

选择"访问规则"条目,然后单击"编辑".单击"添加".

在此输入图像描述

在"解决方案"下,选择"可访问",然后在"规则模式"下输入javafx/**:

在此输入图像描述

单击"确定"退出所有对话框.

此设置将允许访问任何包中的所有类 javafx.,但将保留所有其他类的ext文件夹上的规则,并且在这种意义上是"最小".

同样,您可能真正想要做的是安装e(fx)clipse插件,但据我所知,这是对Eclipse设置的副作用最小的解决方案.


tom*_*tom 63

从Eclipse的角度来看,错误是完全正确的,因为JavaFX来自扩展类路径,并且在所有Java8 VM上都不可用(例如ibm!).

如前所述,您可以通过添加访问规则或IMHO来抑制这些警告,最好的解决方案是安装e(fx)clipse,它会为您自动执行此操作,甚至为您提供JavaFX CSS和FXML的工具.

您可以从http://efxclipse.bestsolution.at/install.html获取一个整合的包

  • 只是侧面的东西:如果你甚至不能在工作中安装eclipse-plugins肯定有问题.限制开发人员使用特定工具集等同于限制他的技能和工作质量. (4认同)
  • 您知道所有这些都是Eclipse项目 - 一体化下载只是一个很好的功能,可以让您快速入门.如果需要,您也可以从Eclipse.org安装.见http://www.eclipse.org/efxclipse/install.html (3认同)

Ray*_*Ray 19

我通过删除JDK并将其读取到构建路径来解决了这个问题.不过,不要问我为什么会这样.


Tha*_*Van 10

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

  1. 选择"帮助" - >"安装新软件"
  2. 单击"添加"按钮以添加以下站点:
  3. 单击确定
  4. 在"使用"中,选择最近添加的网站"efxclipse"
  5. 选中"e(fx)clipse - install"复选框以安装此选择的所有组件
  6. 转到后续步骤以完成安装
  7. 重启你的Eclipse.如果仍然无法识别JavaFX库,请重新启动它.

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


小智 7

我通过仔细使用Eclipse项目的构建路径解决了这个问题.

  • 打开您的应用程序项目的属性,然后选择"构建路径"部分.
  • 将jre8_0\lib\ext\_jfxrt.jar添加为"库"选项卡中的"外部JAR文件".
  • 在"订单/导出"选项卡中,确保此jfxrt.jar位于列表中的第一位.

这样做使Eclipse将jfxrt.jar视为常规的第三方JAR文件.顺序很重要,因此这优先于JRE系统库中的条目.它与实际的JAR文件相同,但Eclipse看到的却不同.

您可能希望更改任何运行配置,以便它不使用jfxrt.jar的"已导出"版本; 但实际上这并没有什么不同.

我用Java8和Eclipse Luna完成了这个; 但我相信校长可以使用Java和Eclipse的任何组合.


use*_*est 5

  • 转到当前项目的构建路径

在图书馆下

  • 选择" JRE系统库 [jdk1.8xxx]"
  • 点击编辑
  • 并选择"Workspace default JRE(jdk1.8xx)" Alternate JRE
  • 点击完成
  • 单击确定

在此输入图像描述

注意:确保在Eclipse/Preferences(不是项目)/ Java/Installed JRE中,jdk指向JDK文件夹而不是JRE C:\ Program Files\Java\jdk1.8.0_74

在此输入图像描述