Überwindung der InaccessibleObjectException von Java 9: „Unable to Make {Member} Accessible“
Verstehen des Problems
Java 9 führt das Plattformmodulsystem ein, das die Kapselung durch Einschränkung des Zugriffs verbessert bestimmte Elemente. Wenn versucht wird, diese Einschränkungen zu umgehen, wird eine InaccessibleObjectException ausgelöst. Die Fehlermeldung gibt das Mitglied an, auf das zugegriffen wird, das Modul, das den Zugriff einschränkt, und das Modul, das versucht, darauf zuzugreifen.
Auflösen der Ausnahme
Die Lösung variiert je nach Szenario, das das Problem verursacht.
1. Reflection-Aufruf in JDK
Problem: Eine Bibliothek oder ein Framework verwendet Reflection, um auf Elemente innerhalb eines JDK-Moduls zuzugreifen.
Lösung: Verwendung Befehlszeilenflags zum Öffnen des spezifischen Pakets zur Reflexion.
java --add-opens {jdk-module}/{package}={accessing-module}
Für Beispiel:
java --add-opens java.base/java.lang=ALL-UNNAMED
2. Reflection Over Application Code
Problem: Reflection wird für den Zugriff auf Elemente innerhalb eines Anwendungsmoduls verwendet.
Lösung:Ändern Sie die Anwendung Der Moduldeskriptor, für den das Paket oder Modul geöffnet werden soll Zugriff.
Optionen:
Paket exportieren:
Exportieren Sie die Paket in ein bestimmtes Modul:
Öffnen Sie das Paket:
Öffnen Sie das Paket für ein bestimmtes Modul:
Öffnen Sie das Ganze Modul:
Die passende Auswahl hängt vom Level ab Zugang und Sichtbarkeit erforderlich.
Das obige ist der detaillierte Inhalt vonInaccessibleObjectException von Java 9: Wie kann die Fehlermeldung „{Member} konnte nicht zugänglich gemacht werden' behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!