Heim >Java >javaLernprogramm >Wie behebt man die InaccessibleObjectException von Java 9: ​​JDK- und Anwendungscode-Lösungen?

Wie behebt man die InaccessibleObjectException von Java 9: ​​JDK- und Anwendungscode-Lösungen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-24 11:30:12390Durchsuche

How to Fix Java 9's InaccessibleObjectException:  JDK and Application Code Solutions?

So lösen Sie die InaccessibleObjectException unter Java 9 auf

Bei der Verwendung von Java 9 können Entwickler auf die InaccessibleObjectException stoßen. Es entsteht aufgrund der Implementierung einer starken Kapselung durch das Java Platform Module System.

Aufschlüsselung der Ausnahmemeldungen:

Unable to make {member} accessible: module {A} does not "opens {package}" to {B}

Hauptszenarien, die die Ausnahme verursachen:

1. Reflektierender Aufruf in JDK

  • {A} ist ein JDK-Modul (z. B. java.base)
  • {member} und {package} gehören zur JDK-API
  • {B} ist ein Bibliotheks-/Framework-/Anwendungsmodul (oft unbenanntes Modul). @...)

2. Reflexion über Anwendungscode

  • {A} ist ein Anwendungsmodul
  • {member} und {package} gehören zum Anwendungscode
  • {B} ist ein Framework-Modul oder unbenanntes Modul @...

1. Lösung für den reflektierenden Aufruf in JDK:

Verwenden Sie das folgende Befehlszeilen-Flag, um das angegebene Paket zur Reflexion zu öffnen:

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

Ersetzen Sie ALL-UNNAMED durch den Namen des Benannten Modul ggf.

2. Lösung für Reflection Over Application Code:

Bearbeiten Sie Modul {A}, um das interne Paket mit einer der folgenden Optionen innerhalb seines Moduldeskriptors zu öffnen:

  • exportiert {Paket} (macht es öffentlich zugänglich)
  • exportiert {Paket} nach {B} (macht es nur zugänglich für B)
  • öffnet {Paket} (macht es zur Laufzeit für den gesamten Code zugänglich)
  • öffnet {Paket} für {B} (macht es zur Laufzeit nur für B zugänglich)
  • Modul {A} { ... } öffnen (macht das gesamte Modul zur Laufzeit für den gesamten Code zugänglich)

Das obige ist der detaillierte Inhalt vonWie behebt man die InaccessibleObjectException von Java 9: ​​JDK- und Anwendungscode-Lösungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn