Problème de dépendance de module dans Java 9 : "Impossible de dériver le descripteur de module pour les noms de module générés automatiquement"
L'impossibilité de dériver un descripteur de module pour les noms de modules générés automatiquement dans Java 9 se produit lors de la déclaration de dépendances sur des bibliothèques qui contiennent des mots-clés réservés dans leurs noms de modules générés. C'est le cas du transport Epoll de Netty, qui génère un nom de module contenant le mot-clé "native".
Java 9 introduit le concept de modules, nécessitant des déclarations de module explicites. Cependant, les noms de modules générés automatiquement suivent une convention qui peut inclure des mots-clés réservés, ce qui entraîne des conflits lors de la déclaration explicite des dépendances.
Solution :
Pour résoudre ce problème, deux des approches primaires sont disponibles :
1. Empaquetage avec Automatic-Module-Name :
Les bibliothèques peuvent empaqueter leurs artefacts avec un fichier META-INF/MANIFEST.MF spécifiant l'attribut Automatic-Module-Name. Cet attribut permet aux bibliothèques de définir un nom de module différent de celui généré, ce qui peut éviter les conflits de mots clés.
2. Ajout de déclarations de module aux JAR par les propriétaires de bibliothèque :
Les propriétaires de bibliothèque peuvent ajouter les déclarations de module nécessaires à leurs fichiers JAR à l'aide d'un fichier module-info.java. Ceci déclare les dépendances explicites des modules et garantit la compatibilité avec le système de modules de Java 9.
Explication :
La syntaxe de déclaration de module de Java spécifie que les noms de module doivent être constitués d'identifiants Java valides. Les mots clés réservés, tels que « natif », ne sont pas autorisés comme identifiants, ce qui entraîne le message d'erreur « Nom de module invalide : « natif » n'est pas un identifiant Java. »
Pour résoudre ce problème, la spécification du système du module Java suggère de convertir les traits d'union et autres caractères spéciaux en traits de soulignement et de préfixer des caractères ou des mots-clés spécifiques avec des traits de soulignement si nécessaire. Cependant, il est important de noter que les traits de soulignement sont également devenus un mot-clé dans Java 9, leur utilisation comme préfixes doit donc être utilisée avec prudence.
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!