Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menyelesaikan Ralat \'Tidak Dapat Menerbitkan Deskriptor Modul\' dalam Java 9 dengan Nama Modul Dijana Auto?

Bagaimana untuk Menyelesaikan Ralat \'Tidak Dapat Menerbitkan Deskriptor Modul\' dalam Java 9 dengan Nama Modul Dijana Auto?

Susan Sarandon
Susan Sarandonasal
2024-11-25 03:05:18991semak imbas

How to Resolve

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:

  • Nama modul mesti terdiri daripada satu atau lebih banyak pengecam Java yang dipisahkan oleh "." token.
  • Nama pakej boleh digunakan sebagai nama modul jika ia mengikut peraturan penamaan yang sama, dengan pengecualian tertentu untuk nama domain.
  • Jika nama domain mengandungi aksara atau kata kunci khas, ia hendaklah ditukar kepada garis bawah atau ditambah dengan garis bawah.
  • Digit pendahuluan tidak dibenarkan dalam nama modul dan garis bawah boleh digunakan sebagai awalan untuk mengelakkan perkara 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn