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 ?
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 :
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.
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 :
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!