web-dev-qa-db-fra.com

Restriction d'accès à la classe en raison de la restriction de la bibliothèque requise

Je reçois ce message d'erreur dans Eclipse:

Access restriction: The type DirectoryWalker is not accessible
due to restriction on required library 
/Library/Java/Extensions/commons-io-1.4.jar

qu'est-ce que ça veut dire? Il y a cette autre SO question sur le même sujet, mais elle ne semble pas s'appliquer dans ce cas. Je ne crée pas une nouvelle classe Java, j'essaie d'en utiliser une.

19
Jason S

Une autre bibliothèque que vous utilisez requiert également Apache Commons I/O, mais une version différente. Avoir un morceau de code (transitoirement) avoir accès à deux versions du même paquet est un peu délicat. Vous pouvez probablement l'arranger pour que votre code et l'autre bibliothèque utilisent la même version. C'est beaucoup plus facile avec CLASSPATH! :)

6

allez dans le chemin de génération Java et sous l'onglet Bibliothèque, supprimez JRE System Library. Puis à nouveau Ajouter une bibliothèque -> Bibliothèque système JRE

A travaillé pour moi

76
Maheen

C'est mon erreur la moins préférée, je l'ai déjà rencontrée plusieurs fois, et la "restriction sur la bibliothèque requise" est juste assez fade pour vous laisser vous gratter la tête. Cependant, c'est facile à réparer.

Le moyen le plus rapide (j'utilise Helios) est d'aller dans Fenêtre-> Préférences-> Java-> Compilateur-> Erreurs/Avertissements, rechercher et ouvrir la puce "API obsolète et restreinte" et définir le renvoi interdit/déconseillé à quelque chose. autre que Erreur.

"Avertissement" est généralement préférable, car quelque chose se passe en Java et vous voulez probablement une note de bas de page. @SuppressWarnings et ses cousins, 98% du temps, ont le même effet sur la logique personnelle et sociale d'un programmeur que, par exemple, une puissance excessive. Mais ce n'est que mon humble analyse.

Bonne chance!

13

Pour ce que ça vaut, j'ai eu cette erreur récemment aussi (bibliothèque différente).

Mon IDE (MyEclipse) fait référence à une certaine bibliothèque dans le chemin de classe global du projet, mais j'avais également une copie du fichier JAR correspondant dans le dossier des extensions Java de ma machine.

Le conflit qui en a résulté a généré l'erreur (inutile) que vous avez rencontrée. Donc, pour tous ceux qui rencontrent cette erreur, vous pouvez également prendre en compte vos chemins de classes.

4
Ben

Paramètres du chemin de construction du projet -> onglet Bibliothèques -> sélectionnez Bibliothèque du système JRE -> bouton Éditer -> changez depuis l'onglet radio Environnement d'exécution, qui indique J2SE 1.x (jdk1.6.0_21) en JRE par défaut de Workspace (jdk1.6.0_21) ]

C'est la meilleure solution à coup sûr!

3
Hasan Sawan

J'ai eu la même erreur que la façon dont j'ai corrigé a été de définir le JRE d'espace de travail par défaut sur le même que le projet, j'ai eu JRE6 pour l'espace de travail et JRE7 pour le projet la définition de JRE7 a résolu le problème

1
drverboten

Dans mon cas, j'ai pu résoudre ce problème en décochant l'attribut de dossier 'Read-only' dans le Properties du dossier du projet. 

Ensuite, j'ai reconfiguré le chemin Build du projet, puis Clean

Cela avait résolu l'erreur. 

0
CMA

Si vous utilisez m2Eclipse, je trouve que "Update Project Configuration" le corrige.

Cliquez avec le bouton droit sur le projet, sélectionnez Maven> Mettre à jour la configuration du projet et donnez-lui quelques secondes.

0
David Carboni

Pour ceux qui cherchent pourquoi Eclipse peut construire le projet, mais Maven ne le peut pas, vérifiez si vous avez JUnit comme bibliothèque ou comme dépendance de plug-in. Si elle est ajoutée en tant que bibliothèque, Maven ne pourra pas la récupérer et émettre de nombreuses restrictions d'accès (le type xyz n'est pas une API).

0
Joost