J'essaie de compiler le code Java 1.4 créé par WSDL2Java d'IBM sur Java5 sans recréer les stubs et j'ai constaté cette erreur dans Eclipse. Je suppose que les stubs créés doivent uniquement être compilés tant que les fichiers jar d'exécution sont disponibles (ils le sont).
Access restriction: The type QName is not accessible due to restriction on required library C:\Program Files\Java\jdk1.5.0_16\jre\lib\rt.jar
Le nom de classe complet est javax.xml.namespace.QName
Qu'est-ce qui se passe exactement ici?
Est-ce un cas où j'essaie de reformer un cochon de saucisse? Suis-je mieux de recréer les stubs?
Il existe une autre solution qui fonctionne aussi.
Cela fonctionne parce que vous avez plusieurs classes dans différents fichiers JAR. Si vous supprimez et rajoutez la bibliothèque JRE, les bonnes classes seront d’abord occupées . Si vous souhaitez une solution fondamentale, excluez les fichiers jar avec les mêmes classes.
Pour moi, j'ai: javax.xml.soap.SOAPPart
dans trois pots différents: axis-saaj-1.4.jar
, saaj-api-1.3.jar
et le rt.jar
http://www.digizol.com/2008/09/Eclipse-access-restriction-on-library.html a fonctionné le mieux pour moi.
Sous Windows: Windows -> Préférences -> Java -> Compilateur -> Erreurs/Avertissements -> API obsolète et restreinte -> Référence interdite (règles d'accès): -> changer d'avertissement
Sur Mac OS X/Linux: Eclipse -> Préférences -> Java -> Compilateur -> Erreurs/Avertissements -> API obsolète et restreinte -> Référence interdite (règles d'accès): -> modification de l'avertissement
J'ai rencontré le même problème. J'ai trouvé la réponse sur le site web: http://www.17ext.com .
Tout d’abord, supprimez les bibliothèques système JRE. Importez ensuite à nouveau les bibliothèques système JRE.
Je ne sais pas pourquoi. Cependant, cela a résolu mon problème, j'espère qu'il pourra vous aider.
Je suppose que vous essayez de remplacer une classe standard livrée avec Java 5 par une autre dans une bibliothèque que vous possédez.
Cela n’est pas autorisé dans les termes du contrat de licence. Toutefois, selon les informations dont je dispose, il n’a pas été appliqué avant Java 5.
J'ai déjà vu cela avec QName auparavant et je l'ai "corrigé" en supprimant la classe du bocal que j'avais.
EDIT http://www.manpagez.com/man/1/Java/ notes pour l'option "-Xbootclasspath:"
"Les applications qui utilisent cette option dans le but de remplacer une classe dans rt.jar ne doivent pas être déployées car cela enfreindrait la licence de code binaire de Java 2 Runtime Environment."
Le http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE
"Restrictions relatives à la technologie Java. Vous ne pouvez pas modifier l'interface de plate-forme Java (" JPI ", identifiées en tant que classes contenues dans Dans le package" Java "ou dans les sous-packages du package " Java "), en créant des classes supplémentaires dans le JPI ou , ce qui entraîne l'ajout ou la modification des classes dans le JPI Dans le cas où vous créez une classe supplémentaire et les API associées qui (i) sont étendues la fonctionnalité de la plate-forme Java, et (ii) est exposée aux développeurs tiers de logiciels dans le but de développer un logiciel supplémentaire qui appelle cette API supplémentaire. vous devez rapidement publier de manière générale un .__ Spécification exacte de cette API pour une utilisation gratuite par tous les développeurs Vous ne pouvez pas créer, ni autoriser vos preneurs de licence à créer, des classes, interfaces ou sous-packages supplémentaires ", " javax "," Sun "ou une convention similaire spécifiée par Sun dans toute désignation de convention de dénomination."
Je reçois aussi cette erreur, mais mon projet est construit sur la ligne de commande en utilisant Maven et le compilateur tycho (il s’agit d’un ensemble de plugins OSGi). Après avoir passé au crible une foule de personnes ayant le même problème mais ayant résolu le problème dans Eclipse plutôt que sur la ligne de commande, j'ai trouvé un message sur le forum des développeurs Tycho qui a répondu à ma question, en utilisant la configuration dans pom.xml
pour ignorer l'avertissement du compilateur la restriction d'accès:
<plugin>
<groupId>org.Eclipse.tycho</groupId>
<artifactId>tycho-compiler-plugin</artifactId>
<version>${tycho.version}</version>
<configuration>
<compilerArgument>-warn:+discouraged,forbidden</compilerArgument>
</configuration>
</plugin>
Plus d’informations sont disponibles dans Tycho FAQ . Cela m'a pris un certain âge pour résoudre le problème, j'ai donc pensé que j'aiderais toute autre personne essayant de réparer ces erreurs de restriction d'accès à partir de la ligne de commande en postant cette réponse.
Windows -> Preferences -> Java Compiler
J'ai juste eu ce problème aussi. Apparemment, j'avais défini le JRE sur 1,5 au lieu de 1,6 dans mon chemin de génération.
En plus de la solution de Nels Beckman , j'ai les astuces suivantes:
Sous Configure Build Path, je devais réorganiser l'ordre de mes entrées sous Order and Export.
De plus, en tant que développeur Eclipse PDE, je devais réorganiser l'ordre de mes dépendances dans mon MANIFEST.MF
, en ajoutant le paquet problématique en premier sur la liste.
En jouant avec ces molettes, en même temps que Project> Clean, j'ai pu résoudre ces avertissements.
pour moi ceci comment je le résous:
sous Bibliothèques
Remarque: assurez-vous que, dans Eclipse/Preferences (PAS le projet)/Java/Installed JRE, le jdk pointe vers le dossier JDK et non vers le JRE C:\Program Files\Java\jdk1.8.0_74
Désolé de mettre à jour un ancien POST. J'ai eu le problème signalé et je l'ai résolu comme indiqué ci-dessous.
En supposant que vous utilisiez le plug-in Eclipse + m2e maven, si vous obtenez cette erreur de restriction d'accès, cliquez avec le bouton droit de la souris sur le projet/module dans lequel vous avez l'erreur -> Propriétés -> Chemin de construction -> Bibliothèque -> Remplacer JDK/JRE à celui utilisé dans l'espace de travail Eclipse.
J'ai suivi les étapes ci-dessus et le problème est résolu.
Dans le cas où vous êtes sûr de pouvoir accéder à une classe donnée, cela peut vouloir dire que vous avez ajouté à votre projet plusieurs fichiers jar contenant des classes avec des noms (ou chemins) identiques, mais un contenu différent jar de construction contient une version plus ancienne intégrée d’une bibliothèque tierce).
Par exemple, lorsque vous ajoutez un jar implémentant:
a.b.c.d1
a.b.c.d2
mais aussi une version plus ancienne implémentant uniquement:
a.b.c.d1
(d2 is missing altogether or has restricted access)
Tout fonctionne bien dans l'éditeur de code, mais échoue lors de la compilation si la "vieille" bibliothèque occulte la nouvelle - d2 devient soudainement "manquant ou inaccessible", même lorsqu'elle est là.
La solution consiste à vérifier l'ordre des bibliothèques au moment de la compilation et à s'assurer que celle avec la bonne implémentation est la première.
Accédez au chemin de construction Java dans les propriétés du projet. Supprimez la bibliothèque système JRE existante Ajoutez-la à nouveau, par exemple Ajouter une bibliothèque -> JRE Lib - sélectionnez jre ---> Terminer . Enfin, sélectionnez commande et exportez onglet, sélectionnez JRE Lib et passez à autre chose. Haut. C'est tout.
Il suffit de changer l'ordre des bibliothèques de chemins de construction de votre projet. Cliquez avec le bouton droit de la souris sur le projet> Chemin de construction> Configurer le chemin de construction> Sélectionner la commande et exporter (Onglet)> Modifier l'ordre des entrées. J'espère que le déplacement de la "bibliothèque système JRE" vers le bas fonctionnera. Cela a fonctionné tellement pour moi. Facile et simple .... !!!
Dans mon cas, il y avait une incompatibilité entre le chemin de génération JRE et le JRE installé sur l'environnement d'exécution. J'ai déménagé dans Projet> Propriétés> Compilateur Java. Il y avait un message d'avertissement en bas.
J'ai cliqué sur les liens "JRE installé", "Environnement d'exécution", "Chemin de génération Java" et ai changé la version du JDK en 1.7 et l'avertissement a disparu.
L'ajout d'un système JRE correct via le chemin de construction est la solution, mais votre Eclipse peut toujours avoir l'erreur . Pour résoudre ce problème, accédez à Chemin de construction Java -> Ordre et exportation et déplacez votre bibliothèque système JRE vers le haut. Cela a résolu mon problème.