ComputeEngine exception:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
Du använder en säkerhetshanterare och du har inte gett den behörigheten i din .policy-fil.
-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
Flera problem där:
-
en fil:kodbas kommer inte att fungera om den inte anger en delad plats som är synlig med det namnet för klienten och registret. Det här ser inte ut som en av dessa.
-
du måste kontrollera om det är rätt namn på policyfilen
-
du behöver inte ens en säkerhetshanterare eller policy på servern, såvida inte klienten ställer in sin egen kodbas och kommer att tillhandahålla klasser till dig. Det händer inte i det här exemplet.
-Djava.security.policy=/Users/name/Documents/workspace/PiComputationRM/client.policy
Dubbelkolla detta namn.
java -Djava.security.policy="server.policy" src/engine/ComputeEngine.java
Error: Could not find or load main class src.engine.ComputeEngine.java
Självklart gjorde du det. Du gav ett kompilatorkommando till JVM. Använd kommandot i handledningen. Du namnger inte .java-filer till JVM.
Du borde ha dubbelkollat ditt arbete mot handledningen istället. Du har misstolkat handledningen på minst två ställen.
Jag skulle också ifrågasätta om du verkligen behöver kodbasfunktionen överhuvudtaget. Jag skulle börja med att ta bort den, och säkerhetscheferna, helt och hållet, och bara få det att fungera utan dem. Det är för mycket av en komplikation för ett första RMI-projekt.