Rumah >Java >javaTutorial >InaccessibleObjectException Java 9: Bagaimana untuk Menyelesaikan 'Tidak Dapat Menjadikan {Ahli} Boleh Diakses'?
Mengatasi InaccessibleObjectException Java 9: "Tidak Dapat Membuat {Ahli} Boleh Diakses"
Memahami Isu
Java 9 memperkenalkan Sistem Modul Platform, yang dipertingkatkan enkapsulasi dengan menyekat akses kepada elemen tertentu. Apabila percubaan dibuat untuk memintas sekatan ini, InaccessibleObjectException dilemparkan. Mesej ralat menentukan ahli yang sedang diakses, modul yang menyekat akses dan modul yang cuba mengaksesnya.
Menyelesaikan Pengecualian
Penyelesaian berbeza-beza bergantung pada senario yang menyebabkan isu.
1. Panggilan Refleksi Ke JDK
Masalah: Pustaka atau rangka kerja menggunakan refleksi untuk mengakses elemen dalam modul JDK.
Penyelesaian: Gunakan bendera baris arahan untuk membuka pakej khusus untuk refleksi.
java --add-opens {jdk-module}/{package}={accessing-module}
Untuk contoh:
java --add-opens java.base/java.lang=ALL-UNNAMED
2. Refleksi Terhadap Kod Aplikasi
Masalah: Refleksi sedang digunakan untuk mengakses elemen dalam modul aplikasi.
Penyelesaian: Ubah suai aplikasi deskriptor modul untuk membuka pakej atau modul untuk akses.
Pilihan:
Eksport pakej:
Eksport pakej ke modul tertentu:
Buka pakej:
Buka pakej ke modul tertentu:
Buka keseluruhan modul:
Pilihan yang sesuai bergantung pada tahap akses dan keterlihatan diperlukan.
Atas ialah kandungan terperinci InaccessibleObjectException Java 9: Bagaimana untuk Menyelesaikan 'Tidak Dapat Menjadikan {Ahli} Boleh Diakses'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!