Impossible de dériver le descripteur de module pour les noms de modules générés automatiquement dans Java 9
Lorsque vous utilisez Java 9, vous pouvez rencontrer une erreur en essayant pour ajouter une dépendance avec un nom de module généré automatiquement contenant un mot-clé réservé, tel que "native". Cette erreur se produit car les noms de modules Java 9 doivent suivre des conventions de dénomination spécifiques et "natif" n'est pas un identifiant Java valide.
Une approche pour résoudre ce problème consiste à modifier le fichier JAR de la dépendance en ajoutant un "META-INF /MANIFEST.MF" avec un attribut "Automatic-Module-Name". Cet attribut spécifie le nom du module à utiliser lorsque le JAR est converti en module automatique.
Par exemple :
<dependency> <groupId>io.netty</groupId> <artifactId>netty-transport-native-epoll</artifactId> <version>${netty.version}</version> <classifier>${epoll.os}</classifier> </dependency> // Add a manifest file to the dependency's JAR: <manifestEntries> <Automatic-Module-Name>netty.transport.epoll</Automatic-Module-Name> </manifestEntries>
Alternativement, les propriétaires d'artefacts peuvent ajouter des déclarations de module à leur JAR en utilisant " "module-info.java". Ces déclarations définissent explicitement le nom du module et ses dépendances, ce qui peut aider à résoudre le problème des noms de module non valides. Cependant, cette approche nécessite une collaboration avec les propriétaires des bibliothèques concernées.
Selon les spécifications du système de modules Java, les noms de modules doivent suivre ces conventions de dénomination :
N'oubliez pas que l'utilisation des traits de soulignement dans Java 9 peut être délicate, car ils sont considérés comme des mots-clés. En tant que tel, évitez d'utiliser « natif » ou « par défaut » comme noms de modules ou de packages.
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!