ComputeEngine exception:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
Използвате мениджър на сигурността и не сте предоставили това разрешение във вашия .policy файл.
-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
Има няколко проблема:
-
файл:кодовата база няма да работи, освен ако не посочи споделено местоположение, което е видимо с това име за клиента и регистъра. Това не изглежда като едно от тези.
-
трябва да проверите дали това е правилното име за файла с политика
-
дори не се нуждаете от мениджър за сигурност или политика в сървъра, освен ако клиентът не задава своя собствена кодова база и ще ви предостави класове. Това не се случва в този пример.
-Djava.security.policy=/Users/name/Documents/workspace/PiComputationRM/client.policy
Проверете отново това име.
java -Djava.security.policy="server.policy" src/engine/ComputeEngine.java
Error: Could not find or load main class src.engine.ComputeEngine.java
Разбира се, че го направихте. Дадохте команда за компилатор на JVM. Използвайте командата, предоставена в урока. Не наименувате .java файлове в JVM.
Вместо това трябваше да проверите отново работата си спрямо урока. Неправилно сте прочели урока на поне две места.
Също така бих се запитал дали изобщо имате нужда от функцията за кодова база. Бих започнал с премахването му и мениджърите по сигурността, като цяло, и просто да го накарам да работи без тях. Това е твърде голямо усложнение за първи проект на RMI.