Maison > Java > javaDidacticiel > InaccessibleObjectException de Java 9 : comment résoudre « Impossible de rendre {Member} accessible » ?

InaccessibleObjectException de Java 9 : comment résoudre « Impossible de rendre {Member} accessible » ?

DDD
Libérer: 2025-01-03 07:58:39
original
780 Les gens l'ont consulté

Java 9's InaccessibleObjectException: How to Resolve

Surmonter l'exception InaccessibleObjectException de Java 9 : "Impossible de rendre {Member} accessible"

Comprendre le problème

Java 9 introduit le Platform Module System, qui améliore l'encapsulation en restreignant l'accès à certains éléments. Lorsqu'une tentative est faite pour contourner ces restrictions, une InaccessibleObjectException est levée. Le message d'erreur précise le membre auquel on accède, le module qui restreint l'accès et le module qui tente d'y accéder.

Résoudre l'exception

La solution varie en fonction du scénario à l’origine du problème.

1. Appel de réflexion dans le JDK

Problème :Une bibliothèque ou un framework utilise la réflexion pour accéder aux éléments d'un module JDK.

Solution :Utiliser indicateurs de ligne de commande pour ouvrir le package spécifique pour réflexion.

java --add-opens {jdk-module}/{package}={accessing-module}
Copier après la connexion

Pour exemple :

java --add-opens java.base/java.lang=ALL-UNNAMED
Copier après la connexion

2. Réflexion sur le code d'application

Problème : La réflexion est utilisée pour accéder aux éléments d'un module d'application.

Solution : Modifier l'application le descripteur du module pour ouvrir le package ou le module pour accès.

Options :

  • Exporter le package :

    • exports {package >
  • Exporter le package vers un module spécifique :

    • exporte {package} vers {accessing-module}
  • Ouvrez le package :

    • ouvre {package}
  • Ouvrez le package dans un module spécifique :

    • ouvre {package} sur {accessing-module >
  • Ouvrir l'intégralité module :

    • ouvrir le module {module-to-open} {...}

Le choix approprié dépend du niveau d'accès et de visibilité requis.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal