ComputeEngine exception:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
Používáte správce zabezpečení a ve svém souboru .policy jste toto oprávnění neudělili.
-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
Existuje několik problémů:
-
soubor:codebase nebude fungovat, pokud neurčuje sdílené umístění, které je pod tímto názvem viditelné pro klienta a registr. Tohle nevypadá jako jeden z nich.
-
musíte zkontrolovat, zda je to správný název souboru zásad
-
nepotřebujete na serveru ani správce zabezpečení nebo politiku, pokud si klient nenastaví vlastní kódovou základnu a nebude vám poskytovat třídy. To se v tomto příkladu nestane.
-Djava.security.policy=/Users/name/Documents/workspace/PiComputationRM/client.policy
Překontrolujte toto jméno.
java -Djava.security.policy="server.policy" src/engine/ComputeEngine.java
Error: Could not find or load main class src.engine.ComputeEngine.java
Samozřejmě, že ano. JVM jste dali příkaz kompilátoru. Použijte příkaz uvedený v tutoriálu. Soubory .java nepojmenováváte JVM.
Místo toho jste měli svou práci dvakrát zkontrolovat s výukovým programem. Špatně jste si přečetli tutoriál nejméně na dvou místech.
Také bych se zeptal, zda vůbec potřebujete funkci codebase. Začal bych tím, že bych to úplně odstranil, a bezpečnostní manažeři, a prostě to zprovoznil bez nich. Pro první projekt RMI je to příliš velká komplikace.