Heim > Java > javaLernprogramm > Illegaler reflektierender Zugriff von Java 9: ​​Wie erkennt, löst und löst man Warnungen?

Illegaler reflektierender Zugriff von Java 9: ​​Wie erkennt, löst und löst man Warnungen?

Barbara Streisand
Freigeben: 2024-12-18 17:59:14
Original
527 Leute haben es durchsucht

Java 9's Illegal Reflective Access: How to Identify, Trigger, and Resolve Warnings?

Grundlegendes zum illegalen reflektierenden Zugriff in Java 9

Unzulässiger reflektierender Zugriff in Java 9 bezieht sich auf bestimmte reflektierende Vorgänge, die gegen die in eingeführten Modulkapselungsprinzipien verstoßen diese Version. Durch den reflektierenden Zugriff können Programme unabhängig von ihren Sichtbarkeitsmodifikatoren dynamisch auf Mitglieder anderer Klassen zugreifen.

Was definiert einen illegalen reflektierenden Zugriff?

Unzulässiger reflektierender Zugriff tritt auf, wenn:

  • Ein Modul versucht, auf ein Mitglied eines anderen Moduls zuzugreifen, das nicht explizit als offen für deklariert ist it.
  • Ein Modul verwendet die Reflektions-APIs, um einen Konstruktor, ein Feld oder eine Methode aufzurufen, auf die der Code des Moduls nicht zugreifen kann.

Wie wird ein illegaler Reflektionszugriff ausgelöst? ?

Die Java 9-Laufzeit überwacht reflektierende Vorgänge. Wenn ein illegaler Zugriff festgestellt wird, wird eine Warnmeldung ausgegeben. Diese Warnung kann unterdrückt werden, indem das JVM-Argument --illegal-access manuell mit einem der folgenden Modi angegeben wird:

  • permit: Ausgabe einer Warnung für den ersten illegalen Zugriff und Schweigen nachfolgende.
  • Warnung: Für jeden Verstoß wird eine Warnung ausgegeben Zugriff.
  • verweigern:Deaktivieren Sie alle illegalen Reflexionsvorgänge.

Szenario, das die Warnung auslöst

Ein illegaler Eine reflektierende Zugriffswarnung wird ausgelöst, wenn die folgenden Bedingungen erfüllt sind:

  • Die --illegal-access JVM Das Argument ist auf „Zulassen“ oder „Warnen“ gesetzt.
  • Ein Modul versucht, auf ein Mitglied eines anderen Moduls zuzugreifen, das für es nicht geöffnet ist.
  • Der reflektierende Zugriff erfolgt über statische Referenzen aus kompiliertem Code oder über die Verwendung der Reflection-APIs.

Auflösen illegalen Reflection-Zugriffs

Zu vermeiden Bei illegalen reflektierenden Zugriffswarnungen sollten Sie die folgenden Schritte in Betracht ziehen:

  • Stellen Sie sicher, dass alle Module ihre Abhängigkeiten deklarieren und bei Bedarf Pakete untereinander öffnen.
  • Verwenden Sie das VM-Argument --add-opens um Pakete zwischen Modulen explizit zu öffnen.
  • Statische Verweise auf JDK-interne APIs aus der Kompilierung entfernen Code.
  • Setzen Sie das JVM-Argument --illegal-access auf „deny“, um illegale Reflexionsvorgänge zu deaktivieren und eine starke Kapselung zu erzwingen.

Das obige ist der detaillierte Inhalt vonIllegaler reflektierender Zugriff von Java 9: ​​Wie erkennt, löst und löst man Warnungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage