ComputeEngine exception:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
Bạn đang sử dụng trình quản lý bảo mật và bạn chưa cấp quyền đó trong tệp .policy của mình.
-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
Một số vấn đề ở đó:
-
một tệp:codebase sẽ không hoạt động trừ khi nó chỉ định một vị trí được chia sẻ mà tên đó có thể nhìn thấy đối với máy khách và Cơ quan đăng ký. Cái này trông không giống một trong những cái đó.
-
bạn cần kiểm tra xem đó có phải là tên chính xác cho tệp chính sách không
-
bạn thậm chí không cần trình quản lý bảo mật hoặc chính sách trong máy chủ, trừ khi máy khách đang thiết lập cơ sở mã của riêng nó và sẽ cung cấp các lớp cho bạn. Điều đó không xảy ra trong ví dụ này.
-Djava.security.policy=/Users/name/Documents/workspace/PiComputationRM/client.policy
Kiểm tra kỹ tên này.
java -Djava.security.policy="server.policy" src/engine/ComputeEngine.java
Error: Could not find or load main class src.engine.ComputeEngine.java
Tất nhiên bạn đã làm. Bạn đã cung cấp một lệnh trình biên dịch cho JVM. Sử dụng lệnh được cung cấp trong hướng dẫn. Bạn không đặt tên tệp .java cho JVM.
Thay vào đó, bạn nên kiểm tra kỹ công việc của mình so với hướng dẫn. Bạn đã đọc sai hướng dẫn ở ít nhất hai chỗ.
Tôi cũng sẽ đặt câu hỏi liệu bạn có thực sự cần tính năng codebase hay không. Tôi sẽ bắt đầu bằng cách loại bỏ nó và các quản lý bảo mật, hoàn toàn và chỉ làm cho nó hoạt động mà không cần chúng. Nó quá phức tạp đối với một dự án RMI đầu tiên.