"java.rmi.ServerException: RemoteException Berlaku dalam Benang Pelayan (ClassNotFoundException)"
Masalah:
Apabila cuba memulakan pelayan RMI, pengecualian berikut ialah dihadapi:
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: Interfaces.RemoteMethodIntf
Salin selepas log masuk
Diagnosis:
Isu asas ialah Pejabat Pendaftaran RMI tidak dapat mencari kelas yang dirujuk dalam antara muka jauh. Ini boleh berlaku dalam beberapa situasi:
-
Mengeksport: Alat penjanaan rintisan (rmic) tidak dijalankan atau pengubahsuaian laluan kelas yang diperlukan yang diterangkan dalam mukadimah UnicastRemoteObject Javadoc tidak dilakukan .
-
Mengikat: Pejabat Pendaftaran tidak mempunyai stub, antara muka jauh atau kebergantungan mereka pada laluan kelasnya.
-
Mencari Ke Atas: Pelanggan tidak mempunyai kelas yang sama pada laluan kelasnya.
-
Memanggil Jauh Kaedah: Sama ada pelanggan menghantar objek kepada pelayan kelas yang tiada pada laluan kelasnya, atau pelayan mengembalikan objek kelas tiada pada laluan kelas pelanggan.
Penyelesaian:
Dalam kes khusus ini, masalah berkaitan dengan Pejabat Pendaftaran kehilangan kelas yang diperlukan pada laluan kelasnya. Untuk menyelesaikan isu ini, terdapat beberapa pilihan:
- Mulakan Pendaftaran dengan CLASSPATH yang diubah suai yang merangkumi JAR atau direktori yang berkaitan.
- Mulakan Pendaftaran menggunakan LocateRegistry.createRegistry() dalam JVM pelayan.
- Gunakan stub dinamik seperti yang diterangkan dalam UnicastRemoteObject Javadoc. Walau bagaimanapun, ini mungkin memerlukan menangani isu pergantungan.
- Pastikan kes (4) di atas tidak berlaku dengan mengesahkan ketekalan laluan kelas untuk pemindahan objek.
- Pertimbangkan untuk menggunakan ciri pangkalan kod, dengan menyedari bahawa ini adalah pilihan penempatan.
Atas ialah kandungan terperinci Mengapa Saya Mendapat \'java.rmi.ServerException: RemoteException Berlaku dalam Benang Pelayan (ClassNotFoundException)\' dalam Pelayan RMI Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!