Eclipse gives warning on access restriction for jfxrt.jar classes

偶尔善良 提交于 2019-12-02 22:23:18

You can choose ignore in the following settings:

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

Use filter to find "Forbidden reference"

Forbidden reference (access rules) : Change it to "ignore"

I'm able to get past this by reconfiguring Java library. For example, explicitly selecting Oracle JDK does the trick.

The easy way is to install e(fx)clipse - a plugin for Eclipse to support JavaFX:

  1. Select Help -> Install New Software
  2. Click Add button to add the following site:
  3. Click OK
  4. In the "Work with" dropdown list, select the recently added site "efxclipse"
  5. Check the checkbox "e(fx)clipse - install" to install all components of this selection
  6. Move to next steps to finish the installation
  7. Restart your Eclipse. If it still doesn't recognize JavaFX library, restart it again.

Original information can be found here: https://www.eclipse.org/efxclipse/install.html#for-the-lazy

Anony-Mousse

Add an access rule to allow access to javafx/**.

See also this answer: https://stackoverflow.com/a/32062263/1060350

For all I can tell, this is a bug in Eclipse in my opinion. I also could not find a way to configure this globally in Eclipse, but you need to redo it for every project.

Navigate to Project settings, Build path, Libraries, JRE. Click on "Access rules" which should have "No rules defined" usually. Add a new rule: "Accessible", and enter the pattern "javafx/**".

This tells the Eclipse Java compiler that javafx.* is an official API that you are allowed to use, so the warning goes away.

Clearly, allowing access to javafx only is much better than ignoring the warning.

The reason why * did not work is because you did not read the wildcard definition. In the access rules, * only matches once, you need ** to match at any depth. I.e. * will allow access to javafx.SomeClass but not not javafx.scene.SomeClass...

Add an access rule for javafx.

Right click your project > Properties > Java Build Path > Libraries tab, then:

  • Expand JRE System Library
  • select Access Rules, click Edit... button
  • click Add...
  • choose Resolution: Accessible
  • set Rule Pattern: javafx/**
  • click OK
  • click OK

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!