Maison > Java > javaDidacticiel > Comment réparer l'exception InaccessibleObjectException de Java 9 : solutions JDK et code d'application ?

Comment réparer l'exception InaccessibleObjectException de Java 9 : solutions JDK et code d'application ?

Barbara Streisand
Libérer: 2024-12-24 11:30:12
original
377 Les gens l'ont consulté

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

Comment résoudre l'exception InaccessibleObjectException sur Java 9

Lors de l'utilisation de Java 9, les développeurs peuvent rencontrer l'InaccessibleObjectException. Cela se produit en raison de la mise en œuvre d'une encapsulation forte par le système de modules de plate-forme Java.

Répartition des messages d'exception :

Unable to make {member} accessible: module {A} does not "opens {package}" to {B}
Copier après la connexion

Principaux scénarios provoquant l'exception :

1. Appel réfléchissant dans JDK

  • {A} est un module JDK (par exemple, java.base)
  • {member} et {package} appartiennent à l'API JDK
  • {B} est un module bibliothèque/framework/application (souvent module sans nom @...)

2. Réflexion sur le code d'application

  • {A} est un module d'application
  • {member} et {package} appartiennent au code d'application
  • {B} est un module framework ou module sans nom @...

1. Solution pour un appel réfléchissant dans JDK :

Utilisez l'indicateur de ligne de commande suivant pour ouvrir le package spécifié pour réflexion :

java --add-opens java.base/java.lang=ALL-UNNAMED
Copier après la connexion

Remplacez ALL-UNNAMED par le nom du nom nommé. module le cas échéant.

2. Solution pour la réflexion sur le code d'application :

Modifiez le module {A} pour ouvrir le package interne en utilisant l'une des options suivantes dans son descripteur de module :

  • exports {package} (le rend accessible au public)
  • exporte {package} vers {B} (le rend accessible uniquement à B)
  • ouvre {package} (le rend accessible au moment de l'exécution à tout le code)
  • ouvre {package} à {B} (le rend accessible au moment de l'exécution à seulement B)
  • ouvrir le module {A} { ... } (rend l'intégralité du module accessible à tout le code au moment de l'exécution)

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal