J'essaie de compiler le code Java 1.4 qui a été créé par WSDL2Java d' IBM sur Java5 sans recréer les stubs et j'ai vu cette erreur dans Eclipse .
Je suis dans l'hypothèse que les stubs générés devraient simplement se compiler tant que le runtime est disponible (ils le sont).jars
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 complet de la classe est javax.xml.namespace.QName
Que se passe-t-il exactement ici? Est-ce un cas où j'essaie de refactoriser un porc de saucisse? Suis-je mieux de recréer les talons?
Réponses:
Il existe une autre solution qui fonctionne également.
Cela fonctionne car vous avez plusieurs classes dans différents fichiers jar. En supprimant et en ajoutant à nouveau la bibliothèque JRE, 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
etrt.jar
la source
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): -> passer à l'avertissement
Sous 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): -> passer à l'avertissement
la source
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. Ensuite, importez à nouveau les bibliothèques système JRE.
Je ne sais pas pourquoi, mais cela a résolu mon problème, j'espère que cela peut vous aider.
la source
Je suppose que vous essayez de remplacer une classe standard livrée avec Java 5 par une dans une bibliothèque que vous avez.
Cela n'est pas autorisé par les termes du contrat de licence, mais AFAIK, il n'a pas été appliqué avant Java 5.
J'ai déjà vu cela avec QName et je l'ai "corrigé" en supprimant 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 l'interface de la plate-forme Java (" JPI ", identifiée en tant que classes contenues dans le package" java "ou tout sous-package du package" java "), en créant des classes supplémentaires dans le JPI ou en provoquant autrement la ajout ou modification des classes dans le JPI. Dans le cas où vous créez une classe supplémentaire et des API associées qui (i) étendent les fonctionnalités de la plate-forme Java et (ii) sont exposées à des développeurs de logiciels tiers pour dans le but de développer un logiciel supplémentaire qui invoque une telle API supplémentaire, vous devez publier rapidement et largement une spécification précise de cette API pour une utilisation gratuite par tous les développeurs. Vous ne pouvez pas créer ou autoriser vos titulaires de licence à créer des classes, interfaces supplémentaires,ou des sous-packages qui sont identifiés de quelque manière que ce soit comme "java", "javax", "sun" ou une convention similaire, comme spécifié par Sun dans toute désignation de convention de dénomination. "
la source
J'ai également eu cette erreur, 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 avoir passé au crible des personnes ayant le même problème mais le corrigeant 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 sur la restriction d'accès:Plus d'informations peuvent être trouvées dans la FAQ Tycho . Cela m'a pris AGES pour travailler, donc je me suis dit que j'allais aider toute autre personne essayant de corriger ces erreurs de restriction d'accès à partir de la ligne de commande en publiant cette réponse.
la source
Windows -> Preferences -> Java Compiler
la source
J'ai juste eu ce problème aussi. Apparemment, j'avais mis le JRE à 1,5 au lieu de 1,6 dans mon chemin de construction.
la source
En plus de la solution de Nels 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 Eclipse PDE, j'avais besoin de réorganiser l'ordre de mes dépendances dans my
MANIFEST.MF
, en ajoutant le package problématique en premier sur la liste.En jouant avec ces cadrans, tout en exécutant Project> Clean entre les deux, j'ai pu résoudre ces avertissements.
la source
pour moi comment je le résous:
sous Bibliothèques
Remarque: assurez-vous que dans Eclipse / Préférences (PAS le projet) / Java / Installé JRE, que le jdk pointe vers le dossier JDK et non vers le JRE C: \ Program Files \ Java \ jdk1.8.0_74
la source
Désolé d'avoir mis à 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 utilisez le plugin Eclipse + m2e maven, si vous obtenez cette erreur de restriction d'accès, cliquez avec le bouton droit sur le projet / module dans lequel vous avez l'erreur -> Propriétés -> Chemin de génération -> Bibliothèque -> Remplacer JDK / JRE à celui qui est utilisé dans l'espace de travail Eclipse.
J'ai suivi les étapes ci-dessus et le problème est résolu.
la source
Dans le cas où vous êtes sûr que vous devriez pouvoir accéder à une classe donnée, cela peut signifier que vous avez ajouté plusieurs fichiers jar à votre projet contenant des classes avec des noms (ou des chemins) identiques mais un contenu différent et ils se sont éclipsés (généralement une ancienne coutume build jar contient une ancienne version intégrée d'une bibliothèque tierce).
Par exemple, lorsque vous ajoutez un jar implémentant:
mais aussi une ancienne version implémentant uniquement:
Tout fonctionne bien dans l'éditeur de code mais échoue lors de la compilation si "l'ancienne" bibliothèque éclipse la nouvelle - d2 se révèle soudainement "manquant ou inaccessible" même quand il est là.
La solution consiste à vérifier l'ordre des bibliothèques au moment de la compilation et à vous assurer que celle qui est correctement implémentée passe en premier.
la source
Accédez au Java Build Path dans les propriétés du projet. Supprimez la bibliothèque système JRE existante, puis ajoutez-la à nouveau, c'est-à-dire Ajouter une bibliothèque -> JRE Lib - sélectionnez jre ---> Terminer. Enfin, sélectionnez l' onglet de commande et d'exportation, sélectionnez JRE Lib et déplacez-vous en haut. C'est ça.
la source
Modifiez simplement l'ordre des bibliothèques de chemins de génération de votre projet. Cliquez avec le bouton droit sur le projet> Chemin de génération> Configurer le chemin de génération> Sélectionnez Ordre et exportation (onglet)> Modifiez l'ordre des entrées. J'espère que le déplacement de la "bibliothèque système JRE" vers le bas fonctionnera. Ça a marché pour moi. Facile et simple .... !!!
la source
Dans mon cas, il y avait une incompatibilité entre le chemin de génération JRE et 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 'Installed JRE', 'Execution environment', 'Java build path' et j'ai changé la version JDK en 1.7 et l'avertissement a disparu.
la source
L'ajout d'un système JRE approprié via le chemin de génération est la solution, mais votre éclipse peut encore contenir l'erreur. Pour résoudre ce problème, accédez à Java Build path -> Order and Export et déplacez votre bibliothèque système JRE en haut. Cela a résolu mon problème.
la source