Tidak dapat memperoleh deskriptor modul untuk nama modul yang dijana secara automatik dalam Java 9
Apabila menggunakan Java 9, anda mungkin menghadapi ralat semasa mencuba untuk menambah pergantungan dengan nama modul yang dijana secara automatik yang mengandungi kata kunci terpelihara, seperti "asli". Ralat ini berlaku kerana nama modul Java 9 mesti mengikut konvensyen penamaan tertentu dan "asli" bukan pengecam Java yang sah.
Satu pendekatan untuk menyelesaikannya ialah mengubah suai fail JAR kebergantungan dengan menambahkan "META-INF /MANIFEST.MF" dengan atribut "Automatic-Module-Name". Atribut ini menentukan nama modul yang akan digunakan apabila JAR ditukar kepada modul automatik.
Contohnya:
<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>
Sebagai alternatif, pemilik artifak boleh menambah pengisytiharan modul pada JAR mereka menggunakan " module-info.java" fail. Pengisytiharan ini secara eksplisit mentakrifkan nama modul dan kebergantungannya, yang boleh membantu menangani isu dengan nama modul yang tidak sah. Walau bagaimanapun, pendekatan ini memerlukan kerjasama dengan pemilik perpustakaan yang terjejas.
Menurut spesifikasi Sistem Modul Java, nama modul hendaklah mengikut konvensyen penamaan ini:
Ingat bahawa menggunakan garis bawah dalam Java 9 boleh menjadi rumit, kerana ia dianggap sebagai kata kunci. Oleh itu, elakkan menggunakan "asli" atau "lalai" sebagai nama modul atau nama pakej.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Tidak Dapat Menerbitkan Deskriptor Modul\' dalam Java 9 dengan Nama Modul Dijana Auto?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!