web-dev-qa-db-fra.com

Restriction d'accès: N'est pas accessible en raison d'une restriction sur la bibliothèque requise .. \ jre \ lib \ rt.jar

J'essaie de modifier certains codes hérités depuis un certain temps et d'obtenir le type d'erreur suivant:

Restriction d'accès: La méthode create (JAXBRIContext, Object) à partir du type En-têtes n'est pas accessible en raison d'une restriction sur la bibliothèque requise.\Jre\lib\rt.jar

pour ces déclarations d'importation:

import com.Sun.xml.internal.bind.api.JAXBRIContext;
import com.Sun.xml.internal.ws.api.message.Header;
import com.Sun.xml.internal.ws.api.message.Headers;
import com.Sun.xml.internal.ws.developer.WSBindingProvider;

Je cherchais ce que cela pourrait vouloir dire et comment le réparer, mais je n’ai pas pu trouver de réponse claire. Certaines publications semblent suggérer que certains JARs implémentés implémentent des classes qui sont maintenant disponibles dans le cadre de la distribution de base Java), mais aucun de ces JARs ne contient/anciennes versions des classes ci-dessus.

Quelqu'un peut-il me dire en quoi consiste cette erreur et comment y remédier?

Merci pour votre aide déjà à l'avance,

Olli

76
user567602

J'ai rencontré quelque chose de similaire, je pense que la raison de l'avertissement est Eclipse qui essaie de vous décourager d'utiliser les packages internes com.Sun Installés dans le cadre de votre espace de travail JRE mais qui ne font pas partie du public Java API.

Comme Justin le dit dans sa réponse, la modification des paramètres de votre compilateur peut masquer l’avertissement. Une approche plus fine consiste à modifier votre chemin de construction pour autoriser explicitement l'accès au paquet en question:

  1. Ouvrez l'onglet Bibliothèques de la fenêtre de propriété du projet Java Chemin de construction.
  2. Développez l'entrée de la bibliothèque système JRE.
  3. Sélectionnez "Règles d'accès" et cliquez sur le bouton Modifier.
  4. Cliquez sur le bouton Ajouter dans la boîte de dialogue résultante.
  5. Pour la nouvelle règle d'accès, définissez la résolution sur Accessible et le modèle sur "com/Sun/xml/internal/**".

Après avoir ajouté cette règle d'accès, votre projet doit être construit sans ces avertissements.

127
Alex

Excellente réponse déjà fournie sur place ici .

Voir le résumé ci-dessous:

  1. Accédez aux paramètres du chemin de construction dans les propriétés du projet.
  2. Supprimer la bibliothèque système JRE
  3. Rajoutez-le Sélectionnez "Ajouter une bibliothèque" et sélectionnez la bibliothèque système JRE. Le défaut a fonctionné pour moi.
79
Abimbola

Pas une vraie solution, mais partout où j'ai regardé, la solution suggérée était simplement de dire à Eclipse que ce ne sont pas des erreurs. Vous pouvez le changer en allant dans Propriétés -> Java Compilateur -> Avertissements concernant les erreurs -> API obsolètes et remises en réserve -> Référence interdite (règle d'accès), Modifiez-le d'erreur en avertissement ou ignorer.

41
Justin

j'ai résolu ce problème en procédant comme suit: développez votre projet, cliquez avec le bouton droit de la souris sur "Bibliothèque système JRE"> Propriétés> choisissez la troisième option "JRE par défaut de l'espace de travail"> OK. J'espère que ça vous aidera aussi

15
Candra

Dans Eclipse:
Project -> properties -> Java Build Path -> libraries

Supprimer la bibliothèque système JRE existante, puis Add Library -> JRE System library -> next -> ok

L'erreur sera supprimée.

8
Bilal Ashraf

J'ai eu le même problème quand mon plugin dépendait d'un autre projet, qui exportait des paquetages dans son fichier manifeste. Au lieu de changer les règles d'accès, j'ai réussi à résoudre le problème en ajoutant les packages requis dans sa section Export-Package. Cela rend les colis légalement visibles. Eclipse fournit en fait ce correctif sur le marqueur d'erreur "Restriction d'accès".

5
Val

Dans l'environnement Eclipse où vous exécutez vos programmes Java, procédez comme suit:

  1. Cliquez sur Projet juste au-dessus de la barre de menus dans Eclipse.
  2. Cliquez sur les propriétés.
  3. Sélectionnez les bibliothèques, cliquez sur la bibliothèque existante, puis cliquez sur Supprimer à droite de la fenêtre.
  4. Répétez le processus et cliquez maintenant sur Ajouter une bibliothèque, puis sélectionnez Bibliothèque système JRE et cliquez sur OK.
1
Leleji Godwin

Je réponds à cette question parce que j'avais une manière de résoudre ce problème différente de celle des autres réponses. J'ai eu ce problème quand j'ai refactored le nom des plugins que j'exportais. Finalement, je devais m'assurer de corriger/changer ce qui suit.

  1. Les dépendances du fichier produit,
  2. Les dépendances plugin.xml (et assurez-vous qu’elles ne sont pas importées implicitement à l’aide de la boîte de dialogue des packages importés).
  3. L'onglet Plug-ins de configuration d'exécution. Run As ..-> Run Configurations-> Plug-ins. Décochez les anciens plug-ins, puis cliquez sur Ajouter les plug-ins requis.

Cela a fonctionné pour moi, mais votre kilométrage peut varier.

0
Lucas

Je viens de changer la facette du projet en 1.7 et cela a fonctionné.

0
Magno C