Maison >Java >javaDidacticiel >Comment résoudre les problèmes de dépendance du module Java 9 avec des noms générés automatiquement contenant des mots-clés réservés ?

Comment résoudre les problèmes de dépendance du module Java 9 avec des noms générés automatiquement contenant des mots-clés réservés ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-28 15:02:10389parcourir

How to Resolve Java 9 Module Dependency Issues with Auto-Generated Names Containing Reserved Keywords?

Impossible de résoudre la dépendance de module pour les noms générés automatiquement dans Java 9 ?

Ce problème survient lorsqu'une dépendance avec un module généré automatiquement name contient le mot-clé « native », qui est réservé dans Java 9. Par conséquent, il devient impossible de l'ajouter en tant que dépendance au module descripteur.

Solution :

Pour résoudre ce problème, deux approches principales peuvent être envisagées :

  1. Ajouter Attribut de nom de module automatique :

    Les propriétaires d'artefacts peuvent emballer un Fichier META-INF/MANIFEST.MF avec l'artefact qui spécifie l'attribut Automatic-Module-Name. Cet attribut définit le nom du module à utiliser par le descripteur de module. En définissant le Automatic-Module-Name sur un nom valide (à l'exclusion de "natif"), le problème peut être résolu.

  2. Ajouter une déclaration de module à JAR :

    Les propriétaires d'artefacts peuvent ajouter des déclarations de module en utilisant module-info.java à leurs fichiers JAR. Cela leur permet de spécifier explicitement le nom du module, évitant ainsi les noms générés automatiquement. Cependant, cette approche nécessite une migration progressive, à mesure que les bibliothèques et les frameworks l'adoptent de bas en haut.

Spécifications du descripteur de module :

Selon le Spécifications de déclaration du module Java 9, un nom de module se compose d'un ou plusieurs identifiants Java séparés par des points. Cela signifie que les noms de modules doivent respecter les règles suivantes :

  • Chaque composant doit être un identifiant Java valide (hors mots-clés).
  • Si le nom de domaine utilisé pour le nom du module contient caractères spéciaux ou mots-clés, il doit être converti en trait de soulignement.
  • Si un composant commence par un chiffre ou d'autres caractères non autorisés comme premier caractère d'un identifiant, un trait de soulignement doit être préfixé.

Remarque sur le trait de soulignement dans Java 9 :

Bien que les traits de soulignement soient généralement autorisés dans les noms de modules, il est important de noter que le trait de soulignement est désormais un mot-clé en Java 9. Par conséquent, les identifiants contenant un trait de soulignement comme caractère initial doivent être évités. Par exemple :

int _native; // Works fine
int _; // Causes an error in Java 9

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