Rumah >Java >javaTutorial >InaccessibleObjectException Java 9: ​​Bagaimana untuk Menyelesaikan 'Tidak Dapat Menjadikan {Ahli} Boleh Diakses'?

InaccessibleObjectException Java 9: ​​Bagaimana untuk Menyelesaikan 'Tidak Dapat Menjadikan {Ahli} Boleh Diakses'?

DDD
DDDasal
2025-01-03 07:58:39790semak imbas

Java 9's InaccessibleObjectException: How to Resolve

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 }
  • Eksport pakej ke modul tertentu:

    • mengeksport {package} ke {accessing-module}
  • Buka pakej:

    • dibuka {package}
  • Buka pakej ke modul tertentu:

    • membuka {package} ke {accessing-module }
  • Buka keseluruhan modul:

    • modul terbuka {module-to-open} {...}

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!

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