Behebung der InaccessibleObjectException in Java 9: Mitglieder können nicht zugänglich gemacht werden
Die InaccessibleObjectException entsteht in Java 9 aufgrund der strikten Kapselung des Java Platform Module Systems , wobei der Zugriff nur unter bestimmten Bedingungen wie öffentlicher Sichtbarkeit und Paket gewährt wird Exportierbarkeit.
Ursachen und Szenarien
Diese Ausnahme tritt normalerweise auf, wenn:
Auflösen Fall 1: Reflektierender Aufruf in JDK
Wie JDK-Module sind unveränderlich, die Lösung liegt in Befehlszeilen-Flags, die Pakete zur Reflexion öffnen. Um beispielsweise die Ausnahme zu beheben:
java --add-opens java.base/java.lang=ALL-UNNAMED
Fall 2 lösen: Reflexion über Anwendungscode
Wenn sich der reflektierende Code in einem bearbeitbaren Modul befindet, sollten Sie dessen Verbesserung in Betracht ziehen Moduldeskriptor:
Andere Abhilfemaßnahmen
Nur in Java 9 können Sie den Kapselungsschutz deaktivieren mit:
java --permit-illegal-access
Hinweis: Dieses Flag sollte aus Sicherheitsgründen sparsam verwendet werden. Weitere Informationen zu Modulkonfigurationen und Best Practices finden Sie in den verlinkten Ressourcen.
Das obige ist der detaillierte Inhalt vonWie löst man die InaccessibleObjectException von Java 9: Reflexions- und Modulsystemkonflikte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!