WARNING: An illegal reflective access operation has occurred [Fermé]

Signaler
Messages postés
4
Date d'inscription
dimanche 17 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
-
Messages postés
4
Date d'inscription
dimanche 17 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
-
Bonsoir!

je débute en JEE. j'utilise eclipse et Tomcat comme serveur.
J'essaie de run une simple servlet mais j'ai ces warning là que je n'arrive pas à comprendre!
INFOS: Destruction du gestionnaire de protocole ["http-nio-8080"]
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.catalina.loader.WebappClassLoaderBase (file:/home/.../apache-tomcat-9.0.31/lib/catalina.jar) to field java.io.ObjectStreamClass$Caches.localDescs
WARNING: Please consider reporting this to the maintainers of org.apache.catalina.loader.WebappClassLoaderBase
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release



Help please!
A voir également:

2 réponses

Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
2 842
Bonjour,

Ce ne sont que des WARNING, pas des ERROR, tu peux les ignorer.

Ce n'est pas ton programme qui pose problème, mais Tomcat.
Ces messages apparaissent depuis Java 9, à cause du fonctionnement interne à Tomcat.
Messages postés
4
Date d'inscription
dimanche 17 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020

Bonsoir,

Je te remercie pour ta réponse.
Mais justement je ne comprend pas ce problème de Tomcat et Java 9. Comment corriger cela? Je ne trouve pas grand chose sur internet.

Merci!!
Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
2 842 >
Messages postés
4
Date d'inscription
dimanche 17 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020

Il y a eu pas mal de changements en Java 9, notamment avec l'arrivée des modules et tout ce qui va avec.
Le code d'un module Client ne peut pas accéder au code d'un module Vendeur si le vendeur ne l'a pas autorisé. C'est vérifié à la compilation.
Mais il est possible via les classes de java.lang.reflect notamment d'accéder à du code à la volée sans qu'il n'ait été compilé au préalable.
En théorie, avec les modules, l'exécution par le module Client d'un code non autorisé du module Vendeur devrait être interdit. Mais pour des raisons de rétrocompatibilité si cela se produit il y a juste un warning mais Java exécute quand même le code.
C'est ce qu'il se passe dans le fonctionnement de Tomcat, mais c'est aux équipes de Tomcat de corriger leurs modules (ce qu'ils ne semblent pas décidés à faire tant que ça marche...)
Messages postés
4
Date d'inscription
dimanche 17 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020

Donc là si je comprend bien J'y peux rien faire pour faire fonctionner mon code?! Il faut que je change ou bien de version de java ou bien de serveur? par-ce que là le serveur se lance même pas!
Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
2 842
Dans le message de warning il y a également la solution à ton problème : il faut ajouter l'option --illegal-access=warn
C'est normalement une option déjà configurée par défaut sur Tomcat si tu le démarrais via le startup.bat mais si tu le lances avec Éclipse tu devrais peut être le configurer à la main.

La documentation relative à cette option :
https://docs.oracle.com/en/java/javase/11/tools/java.html
Messages postés
4
Date d'inscription
dimanche 17 mai 2020
Statut
Membre
Dernière intervention
19 mai 2020
>
Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021

Merci beaucoup pour ton aide !