Applet JSObject mit dem AppletViewer

Yanko

Mitglied
Hallo zusammen,

Ich habe mich heute drangesetzt einen Chat mit Socketserver im Browser zu Programmieren. Ich will dabei nur den Server und ein Applet, dass mit der JavaScript-Seite kommuniziert in Java schreiben, der Rest soll HTML, JS, .. sein. Das Applet stellt die Socketverbindung dar. Das funktioniert auch ganz gut, z.B. kann ich mit

Code:
document.SocketBridge.send('Nachricht');

eine Nachricht an den Server schicken, die dort auch ankommt. ( Dass mache ich nicht im AppletViewer sondern im Browser (FF 17 glaub ich))

Wenn ich aber jetz von meinem Applet aus JS aufrufen will, dann mache ich das mit JSObject (Die plugin.jar habe ich eingebunden). Wenn ich dann das ganze mit Eclipse kompilieren möchte bekommen ich immer eine Fehlermeldung

Code:
java.lang.NoClassDefFoundError: com/sun/deploy/appcontext/AppContext
	at SocketBridge.init(SocketBridge.java:20)
	at sun.applet.AppletPanel.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.sun.deploy.appcontext.AppContext
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 3 more

Hier der Code etwas gekürzt, aber er kann getestet werden, und der Fehler ist der selbe:

Java:
import java.applet.*;
import javax.swing.*;
import netscape.javascript.*;
import java.net.*;
import java.io.*;

public class SocketBridge extends JApplet {

	private static final long serialVersionUID = 1L;
	
	private JSObject browser = null;
	private Socket socket = null;
	
	private int port;
	private String url;

	public void init() {
		try {
			this.browser = JSObject.getWindow(this);
		} catch (JSException e) {
			
		}
	}
	
	public void start() {
	    if (this.browser == null) {
	    	try {
				this.browser = JSObject.getWindow(this);
			} catch (JSException e) {
				
			}
	    }
	}
	
	public boolean connect(String url, int port) {
		this.url = url;
		this.port = port;
		try {
			this.browser.call("printTest", null); // Die Funktion printTest gibt es in JS und gibt ohne Fehler ein alert aus!
		} catch (JSException e) {
			return false;
		}
		return true;
	}
	
	public boolean send(String message) {
		return true;
	}
	
}

Durch stundenlanges Googlen habe ich herausgefunden, dass der AppletViewer keine JSEngine hat und ich deshalb das Applet nicht kompilieren kann. Es muss doch irgendwie möglich sein, trotzdem mit JSObject zu arbeiten?

Wäre euch sehr dankbar wenn ihr mir helfen könnt ;)

Yanko
 
S

Spacerat

Gast
Hast du mal versucht, statt dem Applet die komplette HTML-Seite aus Eclipse heraus zu debuggen? Ich weis zwar das es geht, aber leider nicht mehr genau wie.
 

Yanko

Mitglied
Hallo,

Wie du es beschrieben hast, hab ich es jetzt nicht hingekriegt, aber da es ja nur ein kleines Applet wird, hab ich es jetzt mit editor und kompilieren in der Konsole gemacht.

Troztdem Danke ;)

Yanko
 

hama2046

Neues Mitglied
Hast du deploy.jar? Mit Maven

[XML]
<dependency>
<groupId>sun.deploy</groupId>
<artifactId>deploy</artifactId>
<version>1.6</version>
<type>jar</type>
<scope>system</scope>
<systemPath>${java.home}/lib/deploy.jar</systemPath>
</dependency>
[/XML]
 

Ähnliche Java Themen

Neue Themen


Oben