ComputeEngine exception:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
Anda menggunakan pengelola keamanan dan Anda belum memberikan izin tersebut di file .policy Anda.
-Djava.security.manager -Djava.rmi.server.codebase=file:/Users/name/Documents/workspace/PiComputationRM/src/compute/compute.jar -Djava.security.policy=/Users/name/Documents/workspace/PiComputationRM/server.policy
Beberapa masalah di sana:
-
file:basis kode tidak akan berfungsi kecuali jika menentukan lokasi bersama yang terlihat oleh nama itu ke klien dan Registry. Ini tidak terlihat seperti salah satunya.
-
Anda perlu memeriksa apakah itu nama yang benar untuk file kebijakan
-
Anda bahkan tidak memerlukan manajer keamanan atau kebijakan di server, kecuali jika klien mengatur basis kodenya sendiri dan akan memberikan kelas kepada Anda. Itu tidak terjadi dalam contoh ini.
-Djava.security.policy=/Users/name/Documents/workspace/PiComputationRM/client.policy
Periksa kembali nama ini.
java -Djava.security.policy="server.policy" src/engine/ComputeEngine.java
Error: Could not find or load main class src.engine.ComputeEngine.java
Tentu saja Anda melakukannya. Anda memberikan perintah kompiler ke JVM. Gunakan perintah yang disediakan dalam tutorial. Anda tidak memberi nama file .java ke JVM.
Anda seharusnya memeriksa ulang pekerjaan Anda terhadap tutorial sebagai gantinya. Anda salah membaca tutorial setidaknya di dua tempat.
Saya juga akan mempertanyakan apakah Anda benar-benar membutuhkan fitur basis kode sama sekali. Saya akan mulai dengan menghapusnya, dan manajer keamanan, semuanya, dan membuatnya bekerja tanpa mereka. Ini terlalu rumit untuk proyek RMI pertama.