Maison > Java > javaDidacticiel > Qu'est-ce que l'accès réfléchissant illégal dans Java 9 et comment puis-je y remédier ?

Qu'est-ce que l'accès réfléchissant illégal dans Java 9 et comment puis-je y remédier ?

DDD
Libérer: 2024-12-05 03:07:13
original
229 Les gens l'ont consulté

What is Illegal Reflective Access in Java 9 and How Can I Fix It?

Accès réfléchissant illégal dans Java 9

Suite à l'introduction de la modularité dans Java 9, les développeurs ont rencontré des problèmes liés à l'accès réfléchissant illégal. Pour bien comprendre ce concept, il est essentiel de comprendre d'abord « l'encapsulation détendue-forte » du système de modules.

Définition de l'accès réfléchissant illégal

L'accès réfléchissant illégal fait référence à situations dans lesquelles les opérations de réflexion sont effectuées d'une manière non prévue par les principes de conception modulaire. Il viole les barrières d'encapsulation établies entre les modules et leurs packages.

Circonstances déclenchant l'avertissement

L'avertissement pour accès réfléchissant illégal est déclenché lorsque :

  • Un module accède aux packages internes d'un autre module sans utiliser de déclarations de module ou d'arguments de VM appropriés (par exemple, --add-opens).
  • Le code compilé accède aux API internes du JDK.

Assouplissement des principes de la capsule

Java 9 a introduit le - -option de lancement d'accès illégal avec un paramètre par défaut de permis pour faciliter la migration. En mode permis :

  • La première opération d'accès réfléchissant illégal à un package génère un avertissement.
  • Les opérations ultérieures ne déclenchent pas d'avertissements.

Modes de configuration

L'option --illegal-access peut être configurée avec différents modes :

  • debug : fournit des avertissements et des traces de pile pour chaque accès illégal.
  • warn : émet des avertissements pour chaque accès illégal.
  • deny : interdit les opérations d'accès illégales.

Comment identifier et Corriger

Pour éviter les accès réflexifs illégaux, les développeurs peuvent :

  • Exécuter des applications avec --illegal-access=deny pour détecter les accès non autorisés.
  • Identifier références statiques aux API JDK à l'aide de l'outil jdeps (avec l'option --jdk-internals option).

Message d'avertissement

Les opérations d'accès réflexif illégales entraînent des avertissements au format suivant :

WARNING: Illegal reflective access by $PERPETRATOR to $VICTIM
Copier après la connexion

où :

  • $PERPETRATOR : Type qui a invoqué le réflexif opération
  • $VICTIM : Membre en cours d'accès

Assurer la compatibilité future

Pour garantir la compatibilité future, il est crucial d'éliminer les accès réflexifs illégaux et assurez-vous que les modules suivent les principes d'encapsulation appropriés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal