Maison  >  Article  >  Java  >  Comment résoudre les erreurs « Impossible de dériver le descripteur de module » pour les noms de modules générés automatiquement dans Java 9 ?

Comment résoudre les erreurs « Impossible de dériver le descripteur de module » pour les noms de modules générés automatiquement dans Java 9 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-25 03:43:12638parcourir

How to Resolve

Impossible de dériver le descripteur de module pour les noms de module générés automatiquement dans Java 9 ?

Dans Java 9, un problème courant survient lors de l'utilisation de nom de module généré automatiquement pour les dépendances contenant des mots-clés réservés tels que « natif ». Cela peut entraîner des erreurs telles que « module introuvable ».

Comprendre le problème

Java 9 a introduit le concept de modules, qui permettait l'encapsulation et l'isolation du code. Les modules ont des noms uniques qui doivent respecter les règles d'identification Java. Cependant, certains mots-clés, comme « natif », ne peuvent pas être utilisés dans le nom d'un module.

Solutions de contournement possibles

1. Utilisation de l'entrée manifeste de nom de module automatique

Une solution consiste à ajouter une entrée de manifeste « Nom de module automatique » au fichier JAR de la dépendance problématique. Cette entrée spécifie un nom de module personnalisé pour l'artefact, remplaçant celui généré automatiquement. Par exemple, vous pouvez modifier le fichier manifeste de la dépendance Netty Epoll pour inclure :

<Automatic-Module-Name>netty.transport.epoll</Automatic-Module-Name>

2. Ajout d'une déclaration de module au JAR

Les propriétaires d'artefacts peuvent également ajouter une déclaration de module à l'aide d'un fichier "module-info.java" à leur JAR. Ceci définit explicitement le nom du module, garantissant la compatibilité avec le système de modules de Java 9.

Conventions de dénomination alternatives

Selon les spécifications Java, les noms de module doivent être des noms de package valides. Pour répondre aux cas où le nom de domaine Internet d'une dépendance ne se traduit pas par un nom de package valide, les conventions suivantes sont suggérées :

  • Convertissez les traits d'union ou autres caractères spéciaux en traits de soulignement.
  • Ajoutez un trait de soulignement aux mots-clés.
  • Préfixez les composants commençant par des caractères non autorisés par un soulignement.

Notez cependant que l'utilisation de traits de soulignement dans les noms de modules est déconseillée dans Java 9 en raison de son statut de mot-clé.

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!

Déclaration:
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