Question Restriction d'accès sur la classe en raison de la restriction sur la bibliothèque requise rt.jar?


Je tente de compiler le code Java 1.4 qui a été créé par WSDL2Java d'IBM sur Java5 sans recréer les stubs et vu cette erreur dans Eclipse. Je suis sous l'hypothèse que les stubs créés devraient juste compiler tant que les pots 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 refactoriser un cochon de saucisse? Suis-je mieux de recréer les souches?


783
2018-05-13 20:16


origine


Réponses:


Il y a une autre solution qui fonctionne aussi.

  1. Aller à la Construire le chemin paramètres dans les propriétés du projet.
  2. Retirer le Bibliothèque du système JRE
  3. Rajoutez-le; Sélectionner "Ajouter une bibliothèque" et sélectionnez le Bibliothèque du système JRE. La valeur par défaut a fonctionné pour moi.

Cela fonctionne parce que vous avez plusieurs classes dans différents fichiers jar. Supprimer et rajouter la bibliothèque JRE libérera les bonnes classes. Si vous voulez une solution fondamentale, assurez-vous d'exclure 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


1804
2018-02-01 04:09



http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html travaillé le mieux pour moi.

Sur Windows: Windows -> Préférences -> Java -> Compilateur -> Erreurs / Avertissements -> API obsolète et restreinte -> Référence interdite (règles d'accès): -> change to warning

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): -> change to warning


113
2018-01-16 03:21



J'ai rencontré le même problème. J'ai trouvé la réponse sur le site:http://www.17ext.com.
Tout d'abord, supprimez les bibliothèques système JRE. Ensuite, importez à nouveau les bibliothèques système JRE.

Je ne sais pas pourquoi. Cependant, cela a résolu mon problème, j'espère que cela peut vous aider.


66
2017-11-23 05:55



Je suppose que vous essayez de remplacer une classe standard qui est livrée avec Java 5 avec un dans une bibliothèque que vous avez.

Ceci n'est pas autorisé par les termes du contrat de licence, cependant, AFAIK n'a pas été appliqué avant Java 5.

J'ai déjà vu ça avec QName et je l'ai "corrigé" en retirant la classe du pot que j'avais.

MODIFIER 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 contreviendrait à la licence de code binaire Java 2 Runtime Environment."

le http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE 

"Restrictions de la technologie Java. Vous ne pouvez pas modifier Java Interface de plate-forme ("JPI", identifiée comme classes contenues dans le paquet "java" ou tout sous-paquet du "java" package), en créant des classes supplémentaires dans le JPI ou sinon provoquer l'addition ou la modification du classes dans le JPI. Dans le cas où vous créez un classe supplémentaire et API (s) associée (s) qui (i) étend la fonctionnalité de la plate-forme Java, et (ii) est exposée aux développeurs de logiciels tiers aux fins de développer des logiciels supplémentaires qui invoquent API supplémentaire, vous devez publier rapidement une spécification précise pour une telle API pour une utilisation gratuite par tous les développeurs. Vous ne pouvez pas créer ou autoriser votre les titulaires de licence à créer, des classes supplémentaires, des interfaces ou les sous-paquetages identifiés comme "java", "javax", "sun" ou une convention similaire spécifiée par Sun dans toute désignation de convention de nommage. "


34
2018-05-13 20:30



J'ai aussi eu cette erreur, mais mon projet est construit sur la ligne de commande en utilisant Maven et le tycho compilateur (c'est un ensemble de plugins OSGi). Après des masses de passer au crible les gens ayant le même problème mais en le fixant 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 ignorer l'avertissement du compilateur à propos de 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 peuvent être trouvées dans le Tycho FAQ. Cela m'a pris AGES à travailler, donc j'ai pensé que j'aiderais n'importe qui d'autre essayant de corriger ces erreurs de restriction d'accès à partir de la ligne de commande en publiant cette réponse.


23
2017-09-06 12:31



  • Accédez aux paramètres Build Path dans les propriétés du projet. Windows -> Preferences -> Java Compiler
  • Supprimer la bibliothèque système JRE
  • Ajouter un autre JRE avec un "match parfait"
  • Nettoyez et reconstruisez votre projet. Cela a fonctionné pour moi.

13
2018-03-31 19:09



J'ai juste eu ce problème aussi. Apparemment j'avais placé le JRE à 1.5 au lieu de 1.6 dans mon chemin de construction.


13
2017-07-01 09:46



En plus de La solution de Nels Beckman, J'ai les conseils suivants:

En dessous de Configurer le chemin de construction, J'ai dû réorganiser l'ordre de mes entrées sous Commande et Export.

En outre, en tant que développeur Eclipse PDE, je devais réorganiser l'ordre de mes dépendances dans mon MANIFEST.MF, ajoutant le paquet problématique en premier sur la liste.

Jouer avec ces cadrans, avec course Projet> Propre entre les deux, j'ai pu résoudre ces avertissements.


8
2018-06-01 03:41