wake-up-neo.com

Unzulässiger reflektierender Zugriff durch org.springframework.cglib.core.ReflectUtils $ 1

Mein JDK 9 + 181 Spring Boot 2.0.0.BUILD-SNAPSHOT-CLI-Anwendung zeigt diese Warnung beim Start an:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.springframework.cglib.core.ReflectUtils$1 (jar:file:/home/jan/src/fm-cli/target/fm-cli-0.1.0-SNAPSHOT.jar!/BOOT-INF/lib/spring-core-5.0.0.RELEASE.jar!/) to method Java.lang.ClassLoader.defineClass(Java.lang.String,byte[],int,int,Java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of org.springframework.cglib.core.ReflectUtils$1

Dies ist eine Konsolenanwendung. Ich muss diese Warnung deaktivieren. Wie kann ich das tun?

Note: Diese Frage stellt die spezifische Frage, wie diese durch Spring ausgelöste Warnung deaktiviert werden kann. Es handelt sich nicht um ein Duplikat von JDK9: Ein ungültiger reflektierender Zugriffsvorgang ist aufgetreten. org.python.core.PySystemState das ein ähnliches Symptom in einer anderen Bibliothek behandelt.

29
Jan Nielsen

Fügen Sie in JDK 9+ die folgende Option zur JVM hinzu, um die Warnung von CGLIBs Verwendung von Spring zu deaktivieren:

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

zum Beispiel:

Java --add-opens Java.base/Java.lang=ALL-UNNAMED -jar target/*.jar

Keine Notwendigkeit, es zu melden; es ist ein bekannter Spring Bug

Dies ist darauf zurückzuführen, dass das neue Modulsystem des JDK 9 einen illegalen Zugriff erkannt hat, der in naher Zukunft nicht mehr zugelassen wird. Mehr über das JDK 9-Modul-System finden Sie hier .

Update:

Ein Update für dieses Problem ist JDK 9+ mit Spring 5.1+ verfügbar.

44
Jan Nielsen

Wenn Sie zu der oben genannten Antwort von Jan Nielsen hinzufügen, wenn Sie Intellij und Spring Boot 2.0.3 verwenden, die von Spring Core 5.0.7 abhängen, bleiben Sie immer noch hängen und haben keine Lösung. 

Der Ausweg für mich brauchte zwei Dinge:

  • Fügen Sie der von Jan erwähnten --add-opens Ihrer Run/Debug-Konfiguration hinzu. Bearbeiten Sie einfach die Konfiguration und suchen Sie unter Optionen für Umgebung/VM. Dies sorgt dafür, dass einige der "illegalen Zugriffsnachrichten" stummgeschaltet werden.

  • Ich musste auch eine Abhängigkeit zur jaxb-api -Bibliothek hinzufügen. Ich bekam den Hinweis von ValentinBossi Kommentar zu dieser Frühling Github Ausgabe .

3
Coffee_fan

Vergewissern Sie sich bei Verwendung des Feder-Initialisierers, dass Sie die neueste Version von Spring Boot verwenden. Sie erhalten automatisch Spring Core 5.1 oder höher und Sie werden den Fehler nicht sehen, wenn Sie das Projekt ausführen. 

Sie müssen sich also keine Gedanken über die Bearbeitung einer JVM-Konfiguration machen.

2
Onome Sotu

Wenn Ihre App nach diesen Warnungen immer noch nicht funktioniert, fügen Sie diese Abhängigkeit zu Ihrer pom.xml hinzu

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>

Das hat mir geholfen !!

1