Exit code: 1 - javadoc: error - The code being documented uses packages in the unnamed module, but the packages defined in https://docs.oracle.com/en/java/javase/11/docs/api/ are in named modules.
Adakah yang bisa membuat javadoc berfungsi tanpa harus mengubah versi sumber menjadi 1.8 (seperti yang disarankan di forum lain)? Saya menggunakan JDK v11.0.5 dan masalah ini masih ada (juga dengan JDK 12+).
Sunting: Kesalahan ini berasal dari maven dan dilemparkan oleh maven-javadoc-plugin. Saya belum dapat membuatnya berfungsi untuk JDK 11+ bahkan dengan <source>8</source>
konfigurasi.
Jawaban:
Seperti yang disarankan dalam pelacak masalah OpenJDK ini dapat dikerjakan dengan mendefinisikan sumber pada plugin Javadoc:
sumber
Has anyone been able to make javadoc work without having to change the source version to 1.8
javadoc menghasilkan tautan ke paket yang Anda gunakan, misalnya ke kelas yang didokumentasikan
.../javase/11/docs/api
. Meskipun komentar Anda dalam modul yang tidak disebutkan namanya, targetnya tidak, dan javadoc tidak dapat menggabungkan keduanya. Ini menghasilkan salah satupackage-list
atauelement-list
file, sehingga Anda tidak dapat mencampur modul (paket) yang tidak disebutkan namanya dengan modul bernama.Saya tidak menemukan cara untuk membatasi tautan yang coba diproduksi oleh javadoc; jadi Anda mungkin harus menggunakan modul untuk proyek Anda sendiri. Bagi saya ini konyol, hanya untuk membuat javadoc senang. Saya kira ini hanyalah salah satu alasan mengapa begitu banyak orang tetap menggunakan Java 8.
sumber
Ada signifikan breaking perubahan sejak Java 9 untuk menggunakan Doclet API
API lama menggunakan paket com.sun.javadoc
Anda dapat mencoba menggunakan API Doclet baru, lihat contoh
sumber