Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Wir ihr an der Uhrzeit meines Postings erkennen könnt, habe ich gerade ein Problem. Ich möchte eine RMI-Applikation programmieren und habe dafür das folgende Tutorial durchgearbeitet:
ich habe dabei (wie im Tutorial beschrieben) folgendes gemacht:
1. Interface "Server" angelegt
2. Interface "ServerImpl" implenentiert
3. "ServerProc" implenentiert
4. ServerProc.java auf dem Server kompiliert: "javac ServerProc.java"
5. Dann "rmic ServerImpl"
6. Und dann "rmiregistry 1234 &"
7. Und schließlich die Policy: "java -Djava.security.policy=PolicyDatei ServerProc"
So, und dann schreibe ich auf dem Client (ein anderer Computer) ein kleines Programm und versuche es zu starten. Aber jetzt bekomme ich die folgende Fehlermeldung:
Java:
C:\Users\XP1\rmitest>type Client.java
import java.rmi.*;
class Client
{
public static void main(String args [])
{
Server server;
try {server = (Server)Naming.lookup("rmi://192.168.1.133:1234/Server");
System.out.println(server.getValue());
}catch(Exception e){
}
}
}
C:\Users\XP1\rmitest>"c:\Program Files\Java\jdk1.6.0_17\bin\javac" Client.java
Client.java:6: cannot find symbol
symbol : class Server
location: class Client
Server server;
^
Client.java:8: cannot find symbol
symbol : class Server
location: class Client
server = (Server)Naming.lookup("rmi://192.168.1.133:1234/Server");
^
2 errors
C:\Users\XP1\rmitest>
So, und nun weiß ich nicht weiter. So wie ich das verstehe, findet der Client das Objekt "Server" nicht - habe ich das richtig verstanden? Aber sämtliche Vorgänge auf dem Server verliefen ohne Fehlermeldung. Habe ich etwas übersehen?
das ist ein normaler Compilerfehler, der nichts mit RMI zu tun hat. Er findet die Klasse (bzw. in dem Fall das Interface) Server nicht. Diese muss im selben Package liegen oder importiert werden.
Du warst ja auch noch um die Uhrzeit wach.. Danke für den Tipp! Ich habe das Interface auch auf dem Client compiliert und dannach konnte ich die Clientanwendung auch ohne Fehlemeldung compilieren.
Damit dachte ich, ich hätte diese "Schlach" gewonnen. Aber nein, wenn ich die Clientanwendung starte, passiert leider nichts. Keine Fehlermeldung, aber es wird auch nicht der Wert ausgegeben, den er Server liefern sollte. :-/
Dann wird ein Fehler aufgetreten sein. Dass du keine Fehlermeldung siehst, liegt daran, dass du die Exception mit einem leeren catch-Block einfach "schluckst". Setz da mal ein [c]e.printStackTrace();[/c] rein.
ich wollte mich mit dem Problem gerade wieder befassen und die vorgeschlagene Änderung probieren, aber ich kann auf der Serverseite die Software nicht richtig ausführen.
1. Kompiliere die Dateien wie oben beschrieben
2. Dann kommt ein "rmic ServerImpl"
3. Und wenn ich dann "rmiregistry 1234 &" engebe, bekomme ich keine weitere Rückmeldung und der Cursor wird auch nicht mehr freigegeben. Die Eingabeaufforderung ist "blockiert". Nur mit einem Strg-C kann ich wieder etwas eingeben. Was habe ich jetzt falsch gemacht?