RMI - AccessControlException beim Naming.lookup()

Status
Nicht offen für weitere Antworten.

megachucky

Bekanntes Mitglied
Hallo.

Habe ein Programm, welches an der Uni einwandfrei läuft, nun starte ich es zu Hause und bekomme diesen Fehler:

Exception in thread "main" java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.newCall(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Unknown Source)
at ......<init>(......java:57)
at ........main(.......java:17)

Deamon, Registry und Server starten. Der Fehler kommt dann beim Client, wenn dieser Naming.lookup() macht.

Muss ich da bei mir daheim evtl noch irgendwelche Ports freischalten, oder woran könnte das sonst liegen?

Danke für Hilfe.
 
Ist dein Port 1099 geöffnet? Wohin verbindet sich dein Client? Zu einem RMI-Server auf der gleichen Maschine oder eine andere im Netzwerk?
 
Hallo. Alles auf einer Maschine.

Port 1099 geöffnet?! Hm, also ich benutze ihn zumindest nicht bewusst. Wie kann ich das denn nachschauen bzw dann ändern?
 
Wenn du auf deiner Maschine bleibst, brauchst du keinen Port öffnen.
Hast du einen SecurityManager gesetzt?
Welche Adresse hat dein Server und zu welcher Adresse verbindet sich dein Client?
 
Aufruf
Code:
java -Djava.security.policy=./client.policy  ...
Inhalt von client.policy
Code:
grant {
   // Anarchie
   permission java.security.AllPermission;
};
 
Noch was zur Erklärung. Gibst du keine Policy-Datei an, dann wird die
von JRE (siehe: %JAVA_HOME%\lib\security\java.policy) verwendet.
Ändere diese aber nicht, es soll schon "dicht" sein.
 
SecurityManager ist gesetzt.

Als Adresse benutze ich einfach "localhost", wie gesagt, in der Uni hat genau dieser Code ja auch funktioniert. Daher wundert mich diese Fehlermeldung.
 
Kommentiere mal den SecurityManager aus. Der wird in der lokalen Umgebung u.U. nicht benötigt. Ansonsten musst du den Aufruf so gestalten, wie von Gast geschrieben.
 
Also bei mir scheint es irgend ein anderes Problem zu geben.

Nun startet auch mein Server nicht mehr, und es kommt die Meldung der JVM: Could not find main class. --> NoClassDefFoundError

Habe über nacht aber überhaupt nix am Code verändert ?!? Diesen Fehler hier hatte ich vorgestern auch schon, dann habe ich Eclipse neu installiert und es ging wieder.

Das muss ja nun andere Gründen haben, als einen Fehler im Code?!?
 
also das letzere problem hat sich nun erledigt. meine .class dateien waren gelöscht.

@l-extron-x: nun geht es wirklich. danke.

aber gibts dafür auch eine erklärung? weil in der uni ging es genau so, auch alles auf einem rechner.
 
megachucky hat gesagt.:
aber gibts dafür auch eine erklärung?
Wenn keine .class-Dateien da sind und ein NoClassDefFoundError geworfen wird, ist doch alles gesagt.
Oder meinst du die AccessControlException?
???:L Also wofür soll es nun eine Erklärung geben? Es geht doch jetzt...
 
Weiß ich nicht genau, würde mich auch interessieren. Es gibt in der Klasse System auch eine setProperty()-Methode, ich habe es aber noch nicht probiert. Wahrscheinlich gehts mit dieser Methode.
Ich habe das bisher mit einer Batchdatei oder einer mit JeStart erzeugten kleinen Starter-exe gemacht.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben