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
DDDoriginal
2025-01-03 07:58:39809parcourir

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}

Pour exemple :

java --add-opens java.base/java.lang=ALL-UNNAMED

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!

Déclaration:
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