ComputeEngine exception:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
Du bruger en sikkerhedsmanager, og du har ikke givet den tilladelse 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
Der er flere problemer:
-
en fil:kodebase vil ikke fungere, medmindre den angiver en delt placering, der er synlig med det navn for klienten og registreringsdatabasen. Det ligner ikke en af dem.
-
du skal kontrollere, om det er det korrekte navn for politikfilen
-
du behøver ikke engang en sikkerhedsmanager eller -politik på serveren, medmindre klienten indstiller sin egen kodebase og vil levere klasser til dig. Det sker ikke i dette eksempel.
-Djava.security.policy=/Users/name/Documents/workspace/PiComputationRM/client.policy
Dobbelttjek dette navn.
java -Djava.security.policy="server.policy" src/engine/ComputeEngine.java
Error: Could not find or load main class src.engine.ComputeEngine.java
Selvfølgelig gjorde du det. Du gav en kompileringskommando til JVM. Brug kommandoen i selvstudiet. Du navngiver ikke .java-filer til JVM.
Du burde have dobbelttjekket dit arbejde i forhold til selvstudiet i stedet for. Du har læst vejledningen forkert mindst to steder.
Jeg vil også stille spørgsmålstegn ved, om du overhovedet har brug for kodebase-funktionen. Jeg ville starte med at fjerne det og sikkerhedscheferne helt, og bare få det til at fungere uden dem. Det er for meget af en komplikation for et første RMI-projekt.