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 :
Exporter le package vers un module spécifique :
Ouvrez le package :
Ouvrez le package dans un module spécifique :
Ouvrir l'intégralité module :
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!