Restriction d'accès à la classe en raison d'une restriction sur la bibliothèque requise rt.jar Je ne sais pas.

j'essaie de compiler le code Java 1.4 créé par WSDL2JAVA D'IBM sur Java5 sans recréer les stubs et j'ai vu cette erreur dans Eclipse. Je suis sous l'hypothèse que les stubs créés devraient simplement être compilés tant que les jars d'exécution sont disponibles (ils le sont).

Access restriction: The type QName is not accessible due to restriction on required library C:Program FilesJavajdk1.5.0_16jrelibrt.jar

le nom de classe complet est javax.xml.namespace.QName

que se passe-t-il exactement?

Est-ce un cas où je suis tu essaies de refacter un cochon de saucisse? Suis-je mieux de recréer les bouchons?

785
demandé sur Steen 2009-05-14 00:16:26

15 réponses

il y a une autre solution qui fonctionne aussi.

  1. allez à la chemin de construction paramètres dans les propriétés du projet.
  2. supprimer la bibliothèque système JRE
  3. le rajouter; Sélectionnez "Add Library" et sélectionnez le JRE System Library . La valeur par défaut a fonctionné pour moi.

cela fonctionne parce que vous avez plusieurs classes dans différents fichiers jar. La suppression et le ré-ajout de la jre lib feront que les bonnes classes seront les premières. 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 bocaux différents: axis-saaj-1.4.jar , saaj-api-1.3.jar et le rt.jar

1810
répondu Nels Beckman 2018-01-23 21:33:28

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 restreinte et dépréciée - > référence interdite (règles d'accès): - > changement à l'avertissement

sur Mac OS X / Linux: Eclipse - > Préférences - > Java - > compilateur - > erreurs/avertissements -> API dévalorisée et restreinte - > référence interdite (règles d'accès): - > changement à l'avertissement

116
répondu scommab 2014-08-28 12:59:34

j'ai rencontré le même problème. J'ai trouvé la réponse sur le site: http://www.17ext.com .

Premièrement, supprimer les bibliothèques système JRE. Ensuite, importez de nouveau les bibliothèques système JRE.

je ne sais pas pourquoi.Cependant, il fixe mon problème,j'espère que ça peut vous aider.

66
répondu sanwanxian 2011-09-20 15:01:59

à mon avis, vous essayez de remplacer une classe standard qui est livrée avec Java 5 par une dans une bibliothèque que vous avez.

ce n'est pas autorisé en vertu des termes du contrat de licence, mais AFAIK il n'a pas été mis en application jusqu'à Java 5.

j'ai déjà vu cela avec QName et je l'ai" corrigé " en retirant la classe du bocal que j'avais.

EDIT http://www.manpagez.com/man/1/java / notes pour le option" - Xbootclasspath: "

" Applications qui utilisent cette option dans le but de remplacer une classe dans rt.jar ne devrait pas être déployé car cela contreviendrait à la licence de code binaire D'environnement D'exécution Java 2."

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

"La Technologie Java Restrictions. Vous ne pouvez pas modifier le Java Interface de plate-forme ("JPI", identifiée en tant que classes) contenir dans le paquet" java "ou dans les sous-paquets du paquet "java"" paquet), en créant des classes supplémentaires au sein du JPI ou d'autres causes d'adjonction ou de modification les classes dans le JPI. Dans le cas où vous créez un classe supplémentaire et API associée(s) qui (i) s'étend la fonctionnalité de la plate-forme Java, et (ii) est exposée aux développeurs de logiciels tiers dans le but de le développement de logiciels supplémentaires API supplémentaire, vous devez rapidement publier, en gros, un spécification précise de cette API pour une utilisation libre par tous promoteurs. Vous ne pouvez pas créer ou autoriser votre les titulaires de licence pour créer, des classes supplémentaires, des interfaces ou des sous-paquets qui sont identifiés comme "java", "javax", " sun " ou convention similaire spécifiée par Sun in toute désignation de convention de nommage."

34
répondu Peter Lawrey 2010-10-07 19:46:12

j'ai eu cette erreur aussi, mais mon projet est construit sur la ligne de commande en utilisant Maven et le compilateur tycho (c'est un ensemble de plugins OSGi). Après des masses de tamisage à travers des personnes ayant le même problème mais le fixant dans Eclipse plutôt que sur la ligne de commande, j'ai trouvé un message sur le forum de développeur Tycho qui a répondu à ma question, en utilisant la configuration dans pom.xml pour ignorer l'avertissement du compilateur sur l'accès restriction:

<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 des siècles pour 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 affichant cette réponse.

23
répondu DuffJ 2013-09-06 12:31:50
  • allez dans les paramètres de chemin de construction 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 construisez votre projet à nouveau. Il a travaillé pour moi.
13
répondu Mayur 2010-07-14 21:26:40

je viens d'avoir ce problème aussi. Apparemment, j'avais placé la JRE à 1,5 au lieu de 1,6 dans mon chemin de construction.

13
répondu Dorus 2011-07-01 09:46:10

en plus de Nels solution de Beckman , j'ai les conseils suivants:

sous Configure Build Path , j'ai dû réorganiser l'ordre de mes entrées sous Order and Export .

de plus, en tant que développeur PDE Eclipse, j'ai dû 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 cadrans, avec la course Project > Clean entre les deux, j'ai été en mesure de résoudre ces avertissements.

8
répondu modulitos 2017-05-23 10:31:39

pour moi, c'est comme ça que je le résous:

  • aller au chemin de construction du projet en cours

sous bibliothèques

  • sélectionner la " JRE System Library [jdk1.8xxx] "
  • , cliquez sur modifier
  • et sélectionnez "espace de travail par défaut JRE(jdk1.8xx)" OU Autre JRE
  • Cliquez sur terminer
  • Cliquez sur OK

enter image description here

Note: assurez-vous que dans Eclipse / Preferences (pas le projet) / Java / JRE installé, que le jdk pointe vers le dossier JDK pas le JRE C:\Program fichiers\Java\jdk1.8.0_74

enter image description here

7
répondu usertest 2016-03-20 18:40:23

Désolé pour la mise à jour d'un ancien POST. J'ai eu le problème et je l'ai résolu comme dit ci-dessous.

en supposant que vous utilisez Eclipse + M2E maven plugin, 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 compilation --> Bibliothèque --> remplacer JDK/JRE vers celui qui est utilisé dans l'espace de travail eclipse.

j'ai suivi les étapes ci-dessus et la question est résolue.

6
répondu Arun B Chandrasekaran 2013-05-24 10:51:46

dans le cas où vous êtes sûr que vous devriez être en mesure d'accéder à une classe donnée, que cela peut signifier que vous avez ajouté plusieurs pots à votre projet contenant des classes avec des noms (ou des chemins) identiques, mais le contenu différent et ils sont éclipsés l'un l'autre (généralement un vieux pot personnalisé de construction contient la version plus ancienne intégrée d'une bibliothèque tierce partie).

par exemple quand vous ajoutez un jar implémentant:

a.b.c.d1
a.b.c.d2

mais aussi une version plus ancienne uniquement pour la mise en œuvre:

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 "l'ancienne" bibliothèque éclipse la nouvelle - D2 s'avère soudainement "manquante ou inaccessible" même lorsqu'elle est là.

la solution est de vérifier l'ordre des bibliothèques de compilation et de s'assurer que celle avec une implémentation correcte passe en premier.

5
répondu Mr. Napik 2013-04-01 15:18:17

aller sur le chemin de construction Java dans les propriétés du projet. Supprimer la Bibliothèque du système JRE Puis L'ajouter à nouveau, C'est-à-dire ajouter Bibliothèque-->JRE Lib--sélectionner jre- - - >terminer. Enfin, sélectionnez commander et exporter onglet Sélectionner jre Lib et passer à la page supérieure. C'est tout.

4
répondu Vijay Bhatt 2015-02-16 11:51:56

il suffit de changer l'ordre des bibliothèques de chemin de construction de votre projet. Clic droit sur le projet>Build Path> Configure Build Path>Sélectionnez l'Ordre et de l'Exportation(Onglet)>Changer l'ordre des entrées. J'espère que le déplacement de la" bibliothèque du système JRE " vers le bas fonctionnera. Il a travaillé pour moi. Facile et simple....!!!

3
répondu Samitha Chathuranga 2014-07-28 16:57:05

dans mon cas, il y avait un décalage entre le chemin de construction JRE et l'environnement d'exécution JRE installé. J'ai emménagé dans Projet > Propriétés > compilateur Java. Il y avait un message d'avertissement en bas.

j'ai cliqué sur les liens 'Installed JRE', 'Execution environment', 'Java build path' et j'ai changé la version JDK à 1.7 et l'avertissement a disparu.

3
répondu Soumyajit Swain 2016-08-16 09:04:21

Ajouter un système JRE droit par le chemin de construction est la solution mais votre éclipse peut encore avoir l'erreur. Pour résoudre cela, allez à Java Build path --> commandez et exportez et déplacez votre bibliothèque système JRE sur le dessus. Ce qui a résolu mon problème.

0
répondu Abhishek Soni 2017-08-16 06:40:31