Java 9 Tidak Dapat Menghasilkan Deskriptor Modul untuk Nama Dijana Auto: Meneroka Penyelesaian
Dalam Java 9, pengenalan modul membawa keperluan untuk menentukan nama modul mengikut peraturan pengecam Java. Walau bagaimanapun, keperluan ini menimbulkan cabaran untuk beberapa nama modul yang dijana secara automatik, terutamanya yang mengandungi kata kunci "asli".
Pertimbangkan kes pergantungan pengangkutan Netty Epoll:
<dependency> <groupId>io.netty</groupId> <artifactId>netty-transport-native-epoll</artifactId> <version>${netty.version}</version> <classifier>${epoll.os}</classifier> </dependency>
Nama modul yang dijana secara automatik untuk kebergantungan ini ialah "netty.transport.native.epoll," yang melanggar peraturan pengecam Java kerana kehadiran "native" kata kunci.
Untuk menangani isu ini, satu penyelesaian yang berpotensi terletak pada mengubah suai fail META-INF/MANIFEST.MF artifak untuk memasukkan atribut Automatic-Module-Name . Atribut ini mentakrifkan nama modul kerana ia sepatutnya digunakan dalam deskriptor modul:
<manifestEntries> <Automatic-Module-Name>netty.transport.epoll</Automatic-Module-Name> </manifestEntries>
Walau bagaimanapun, penyelesaian ini memerlukan kerjasama dengan pemilik artifak, menjadikannya pilihan yang kurang segera.
An pendekatan alternatif melibatkan pemilik artifak memasukkan pengisytiharan modul menggunakan module-info.java dalam JAR mereka. Tindakan ini mencetuskan proses migrasi dari bawah ke atas, di mana kebergantungan yang tidak memberikan maklumat modul diandaikan untuk mengeksport semua pakej.
Atas ialah kandungan terperinci Ralat Deskriptor Modul Java 9: Bagaimana Mengendalikan Nama Dijana Auto seperti \'asli\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!