web-dev-qa-db-fra.com

Eclipse donne un avertissement sur la restriction d'accès pour les classes jfxrt.jar

J'utilise Eclipse kepler avec Java SE 1.8 bibliothèque système jdk mais quand j'utilise des classes ou des méthodes javafx, Eclipse donne un avertissement comme 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').

J'ai essayé d'ajouter une règle d'accès à la bibliothèque système pour autoriser l'accès à tous les fichiers de la bibliothèque à l'aide du caractère générique * Mais l'avertissement est toujours là. Suis également en utilisant maven pour le projet de construction. Le code fonctionne mais l'avertissement persiste et affecte la lisibilité en tant que code I. Toute aide est appréciée.

Edit: j'ai également essayé d'ajouter @SuppressWarnings("restriction") au début de mes cours, mais cela ne résout toujours pas la cause inconnue et masque tous les autres avertissements de restriction que je pourrais avoir besoin de voir

Vous pouvez choisir ignore dans les paramètres suivants:

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

Utilisez le filtre pour trouver "Forbidden reference"

Forbidden reference (access rules): remplacez-le par "ignore"

enter image description here

4
ltalhouarne

Je peux surmonter cela en reconfigurant la bibliothèque Java. Par exemple, la sélection explicite d'Oracle JDK fait l'affaire.

Configure Build Path

Edit Java lib

Select explicit JDK

31
Hollis Waite

Le moyen le plus simple est d'installer e (fx) clipse - un plugin pour Eclipse pour prendre en charge JavaFX:

  1. Sélectionnez Aide -> Installer un nouveau logiciel
  2. Cliquez sur le bouton Ajouter pour ajouter le site suivant:
  3. Cliquez sur OK
  4. Dans la liste déroulante "Travailler avec", sélectionnez le site récemment ajouté "efxclipse"
  5. Cochez la case "e (fx) clipse - install" pour installer tous les composants de cette sélection
  6. Passez aux étapes suivantes pour terminer l'installation
  7. Redémarrez votre Eclipse. S'il ne reconnaît toujours pas la bibliothèque JavaFX, redémarrez-le à nouveau.

Des informations originales peuvent être trouvées ici: https://www.Eclipse.org/efxclipse/install.html#for-the-lazy

7
Thach Van

Ajoutez une règle d'accès pour autoriser l'accès à javafx/**.

Voir aussi cette réponse: https://stackoverflow.com/a/32062263/106035

Pour tout ce que je peux dire, c'est un bug dans Eclipse à mon avis. Je n'ai pas non plus trouvé de moyen de configurer cela globalement dans Eclipse, mais vous devez le refaire pour chaque projet.

Accédez à Paramètres du projet, Chemin de génération, Bibliothèques, JRE. Cliquez sur "Règles d'accès" qui devraient avoir "Aucune règle définie" habituellement. Ajoutez une nouvelle règle: "Accessible" et entrez le modèle "javafx/** ".

Cela indique au compilateur Eclipse Java que javafx.* est une API officielle que vous êtes autorisé à utiliser, donc l'avertissement disparaît.

Clairement, autoriser l'accès à javafx seulement est bien mieux que d'ignorer l'avertissement.

La raison pour laquelle * n'a pas fonctionné car vous n'avez pas lu la définition du caractère générique. Dans les règles d'accès, * ne correspond qu'une seule fois, vous avez besoin de ** pour correspondre à n'importe quelle profondeur. C'est à dire. * permettra l'accès à javafx.SomeClass mais pas javafx.scene.SomeClass...

3
Anony-Mousse

Ajoutez une règle d'accès pour javafx.

Cliquez avec le bouton droit sur votre projet> Propriétés> Java Chemin de génération> onglet Bibliothèques, puis:

  • Développer la bibliothèque système JRE
  • sélectionnez Règles d'accès, cliquez sur Edit... bouton
  • cliquez sur Add...
  • choisissez Résolution: Accessible
  • définir le modèle de règle: javafx/**
  • cliquez sur OK
  • cliquez sur OK

add access to lib for jfxrt

2
broc.seib