Applet startet nicht im Browser

Die Programmierung des c't-Sim
Antworten
scientificum

Applet startet nicht im Browser

Beitrag von scientificum » 02 Sep 2007, 20:11

Hallo an alle, bräuchte mal Eure Hilfe...

Habe das Applet erfolgreich kompiliert (mit JDK 1.5.0_12) und auf den WiPort des Roboters übertragen. Wenn ich nun im Browser die Adresse des Roboters aufrufe, steht unten: Applet ctSim.applet.Main notinited und in der Javakonsole erscheint folgende

Fehlermeldung Nr.1

[pre]
java.lang.NoClassDefFoundError: ctSim/util/IconProvider
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[/pre]

Wenn ich die Applet-html Seite direkt im Browser öffne, erscheint ein grauer Balken mit "Verbinde mit 10.10.22.58" und nichts passiert, in der Javakonsole erscheint diesmal:

Fehlermeldung Nr.2

[pre]
02.09.2007 18:55:46 ctSim.util.FmtLogger info
INFO: Verbinde mit 10.10.22.58:10002 ...
Exception in thread "ctSim-Connect-10.10.22.58:10002" java.security.AccessControlException: access denied (java.net.SocketPermission 10.10.22.58:10002 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 ctSim.TcpConnection.<init>(Unknown Source)
at ctSim.TcpConnection$2.work(Unknown Source)
at ctSim.util.SaferThread.run(Unknown Source)
[/pre]

Soweit die Fehlermeldungen. Seltsam ist, wenn ich in der make-applet.xml die Fallback IP mit der des Roboters austausche und jenes neu kompilierte Applet in Eclipse starte, (über RUN... JAVA APPLET..) bekomme ich ein Fenster mit Menu, und alles scheint prima zu klappen. Ich erhalte dann die Telemetriedaten vom Roboter über WLAN, alles OK. Im Browser erscheinen wiederrum nur Fehler 1 und 2.

Wo ist das Problem?
a) Warum verbindet sich das lokale Applet nicht mit dem Roboter (Fehlermeldung Nr.1)
b) Wieso läuft das Applet problemlos in Eclipse und nicht im Browser?

Es gibt im Heise-Forum jmd. mit ähnlichem Problem aber keine Lösung

Eine mögliche Ursache ist eine Linkereinstellung von Ant, mit tools.jar, die zuerst Probleme beim Kompilieren machte, hab's hinbekommen aber kein Erfolg am o.g. Problem.

Wäre super, wenn jemand bescheid' wüsste... :-k

Hari

eax
Friends of Robby
Friends of Robby
Beiträge: 757
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Beitrag von eax » 02 Sep 2007, 22:10

Hi,

also so wirklich helfen kann ich dir da wohl nicht, aber zwei Anmerkungen:
Zu b): Ein Java-Applet kann aus Sicheitsgründen (im Browser jedenfalls) immer nur mit dem Host kommunizieren, auf dem es selbst läuft, daher ist die IP-Adresse im Code für den praktischen Einsatz vom Browser aus nicht zu gebrauchen. Deswegen kommt es zu Fehlermeldung 2.
Zu a) Fehlermeldung 1 tritt IMHO auf, weil beim Bauen des Applets nicht alle Abhängigkeiten mit ins jar gelangt sind (hier der IconProvider). Warum kann ich dir leider nicht sagen.

Gruß Timo

scientificum

Beitrag von scientificum » 03 Sep 2007, 02:48

Hmm, an meiner Toolchain kann es nicht liegen, denn selbst wenn ich die vorkompilierten Binaries aus dem SVN auf den Bot hochlade, bekomme ich wieder die gleiche Fehlermeldung Nr. 1 ... :cry:

Bin ziemlich ratlos, habe leider festeingebautes WLAN im Läppi, kann das Applet nicht von (auf) einem anderen PC testen, werde es aber morgen versuchen. Vielleicht liegt es ja daran.

Guten Wochenstart allerseits,
H.

eax
Friends of Robby
Friends of Robby
Beiträge: 757
Registriert: 18 Jan 2006, 16:16
Wohnort: Karlsruhe

Beitrag von eax » 03 Sep 2007, 17:45

Hi,

ich denke dann liegt es entweder am installierten Java oder am Browser. :roll: Hast du auch mal eine ältere Java-Version ausprobiert? Vielleicht gibt es mit neueren Änderungen bei Java Probleme.

Gruß Timo

scientificum

Beitrag von scientificum » 03 Sep 2007, 17:58

OK, habe ein eindeutiges Ergebnis zu den Problemen rausgefunden - es liegt an den Netzwerkeinstellungen des WiPorts bzw. Computers/Router, obwohl die Verbindung zum DeviceManager klappt...

Umgebungsbeschreibung:
Die IP meines Laptops ist 192.168.1.20 (im grünen Netz), gehe über Kabel an einen Router (IPcop) ins Inet und habe daran ein "blaues" 192.168.4.0 Netz für WLAN, welches ich bei Bedarf einschalte. Hatte den WiPort auf 192.168.4.100 eingestellt, sowohl unter Network als auch unter CH2/Connection. Mit dem Laptop (XP) habe ich dann eine direkte Verbindung zum Bot hergestellt (AdHoc), wobei ich nachwievor surfen (Kabel, grün) konnte und gleichzeitig den Bot (Funk, blau) ansprechen, NUR DeviceManager. Übertragen von Files klappte auch ganz gut, Applet gibt Fehlermeldung Nr. 1 aus, nichts passiert.

Wenn ich nun den WiPort auf Kabel stelle und ihm eine IP im grünen Netz gebe, läuft das Applet problemlos, alles geilomat! 8)

Wenn man wieder auf Funk umstellt, läuft das Applet nur, wenn man dem Laptop eine neue WLAN-IP in grün gibt, also z.B. 192.168.1.21 und das Kabel von der anderen Netzwerkkarte rauszieht (weil ja sonst alles über das Gateway geroutet wird) und den WiPort ebenfalls für das grüne Netz konfiguriert, also 192.168.1.100

Somit steht fest, daß die Fehlermeldung Nr.1 im Endeffekt ein Netzwerk bzw. IP-Paket-Router-Problem ist und NICHT ein Kompilierfehler von Java oder so. Schäm on me...

Solution: Bot vernünftig in das WLAN Netz einbinden und Firewall anpassen oder Remotecomputer nur mit einer Netzwerkschnittstelle betreiben, wenn Einstellungen so sind, wie in dem Artikel beschrieben. Hoffe es hilft weiter...

Hari

Antworten