Habe ein Problem mit meinem Applet, das als frontend
client - eingaben an ein servlet übergeben soll .
Das Applet besteht aus
1Panel
->3 Choice + 1 Button+ 1 TextField
Ich konnte es ohne fehler kompilieren, aber wenn ich es mit dem appletviewer
testen will komme ich nicht mal über init() sondern erhalte gleich folgenden
fehlerwulst :
java.lang.NoClassDefFoundError: SearchApplet (wrong name:
com/tellux/xsso/Search
Applet)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:11
1)
at
sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:142)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at
sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:108)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:366)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:579)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:515)
at sun.applet.AppletPanel.run(AppletPanel.java:293)
at java.lang.Thread.run(Thread.java:484)
Woran liegts , bzw. was könnte falsch sein . Am CLASSPATH liegts jedenfalls
nicht . Bitte helfen !
Danke im Vorraus
Alexander
es sieht so aus, als ob du dich irgendwo vertippt und einen falschen
klassennamen angegeben hast... das ganze ist aber ohne die
entsprechenden sourcen nicht zu diagnostizieren. das ist im moment so,
als ob du am telefon zum arzt sagst: 'schauen sie mal - wenn ich so
mache, tuts weh - warum?' :-) wie also sieht der kontext aus?
axel
irgendwelche Listener?
> Ich konnte es ohne fehler kompilieren, aber wenn ich es mit dem
appletviewer
> testen will komme ich nicht mal über init() sondern erhalte gleich
folgenden
> fehlerwulst ...
Hast du mal versucht das ganze nicht mit dem appletviewer zu betrachten,
sondern
in ein html file einzubinden?
<applet code="myApplet.class" height="100%" width="100%"></applet>
Vielleicht stimmt was mit deinem Viewer nicht?
mfg
steffen
Ja, hab ich ganz vergessen . Einen ActionListener auf dem Button.
> Hast du mal versucht das ganze nicht mit dem appletviewer zu betrachten,
> sondern
> in ein html file einzubinden?
Habe ich schon versucht, was mir einen grauen screen beschert, mit der
fehlermeldung class not found .
soll ich den source code posten ? also gut ist ja nicht viel. ;-))
// Source code geht los
package com.tellux.xsso;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.applet.Applet;
import java.awt.Choice.*;
public class SearchApplet
extends Applet
implements ActionListener {
private TextField queryField;
private Button submitButton;
private Choice langs;
private Choice boolOp;
private Choice relation;
private int language;
private int bool;
private int relationType;
private String query;
public void init() {
setFont(new Font("Serif", Font.BOLD, 18));
add(new Label("Search String:"));
queryField = new TextField(40);
queryField.addActionListener(this);
add(queryField);
submitButton = new Button("Expand");
submitButton.addActionListener(this);
add(submitButton);
add(new Label("Choose language"));
langs = new Choice();
langs.add("None specific");
langs.add("Dutch");
langs.add("English");
langs.add("French");
langs.add("German");
langs.add("Spanish");
langs.add("Italian");
// langs.addActionListener(this);
add(langs);
add(new Label("Choose boolean operator"));
boolOp = new Choice();
boolOp.add("* Select *");
boolOp.add("And");
boolOp.add("Or");
// boolOp.addActionListener(this);
add(boolOp);
add(new Label("Select relation type"));
relation = new Choice();
relation.add("* Select *");
relation.add("Scope Note");
relation.add("Source");
relation.add("Definition");
relation.add("Sometimes Synonym for");
relation.add("Broader Term");
relation.add("Narrow Term");
relation.add("Top Term");
relation.add("Related Term / Opposite");
relation.add("Also as");
relation.add("Semantic Type");
//relation.addActionListener(this);
add(relation);
}
public void actionPerformed(ActionEvent evt)
{
Object src = evt.getSource();
if((src == submitButton)) {
query = URLEncoder.encode(queryField.getText());
submitData();
}
/*
if((src == relation)) {
relationType = relation.getSelectedIndex();
}
if((src == boolOp)) {
bool = boolOp.getSelectedIndex();
}
if((src == langs)) {
language = langs.getSelectedIndex();
}
*/
}
public void submitData()
{
try {
String host = "km.tellux.de";
URL currentPage = getCodeBase();
String protocol = currentPage.getProtocol();
String uri = "/jservlet/xssodemo" ;
int port = 80;
URL dataURL = new URL(protocol, host, port, uri);
URLConnection con = dataURL.openConnection();
// don't cache this URL
con.setUseCaches(false);
con.setDoOutput(true);
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(512);
PrintWriter out = new PrintWriter(byteStream, true);
String postData = "QueryString=" + query +
"&language=" + language +
"&bool=" + bool +
"&relationType=" + relationType ;
// Write POST data into local buffer
out.print(postData);
out.flush(); // flush the toilet cause we didn't use println
String lengthString = String.valueOf(byteStream.size());
con.setRequestProperty("Content-Length", lengthString);
con.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
// Write POST data to real output stream
byteStream.writeTo(con.getOutputStream());
} catch(MalformedURLException mue) {
System.err.println("Bad URL!" + mue.toString());
} catch(UnknownHostException ue) {
System.err.println("Bad host!" + ue.toString());
} catch(IOException ie) {
System.err.println("I/O error!" + ie.toString());
}
}
public void destroy()
{
}
}
// Source code ist schon zuende
Na hoffentlich können sie mir helfen herr doktor ;-)
Welches JDK benutzt Du? Bei Applets würde ich mich auf 1.1 beschränken.
Aber wenn ich mich recht entsinne, hattest Du ja mit dem AWT und nicht mit Swing
gearbeitet.
Ingo
--
__________________________________________________________
News suchen, lesen, schreiben mit http://newsgroups.web.de
> es soll ärzte geben denen diese angaben für eine diagnose genügen ;-)
>
> soll ich den source code posten ? also gut ist ja nicht viel. ;-))
>
Und wie rufst Du den Appletviewer auf?
Oder wie sieht Dein AppletTag in der HTML-Seite aus?
Micha
--
Homepage & FAQ von de.comp.lang.java: http://www.dclj.de
> Oder wie sieht Dein AppletTag in der HTML-Seite aus?
>
er sagte ja, er hätte probleme mit dem appletviewer...
axel
Er hat mir schon privat gemailt und der Aufruf in der HTML-Seite
enthielt nicht den Klassennamen incl. Package.
Zusätzlich zu meiner erfolgten Antwort muß dann natürlich von der
CodeBase ausgehend noch die Packagestruktur als Verzeichnisstruktur
vorhanden sein.
axel
Was aber nichts daran ändert, dass so ein Problem leichter gelöst werden kann,
wenn man es nicht per PM diskutiert. Immer hin soll ja jeder die Möglichkeit
haben, dabei zu lernen.
Nur als kleine Bemerkung für´s nächste Mal.
Was Deine PM an mich angeht: JDK 1.2 für Applets ist schon ziemlich hoch
gegriffen, da z.B. der MS IE und NN <6.0 nur bis 1.18 unterstützen. Da wäre ich
für die weitere Entwicklung vorsichtig.
Aber es scheint ja noch zu funktionieren.
Dann wünsch ich Dir viel Glück
Habe noch weitere fragen bezüglich applets :
mein applet soll wie schon beschrieben die eingabe an ein servlet
übermitteln . syntaktisch scheint das alles kein problem zu sein .es gibt ja
keine fehlermeldung beim compilen , aber sobald ich auf den "submit" button
klicke . erhalte ich:
java.security.AccessControlException: access denied
(java.net.SocketPermission foo.hostname.de resolve)
um dieses offensichtliche misstrauen dass meinem applet entgegengebracht
wird entgegenzuwirken , tat ich folgendes. 1.) ein jar file mit dem applet
als inhalt erzeugt
2.) keystore erzeugt
3.) jar file "gesigned"
4.) policy für meinen keystore ausgestellt
(java.net.SocketPermission resolve, connect , java.awt.AWTPermission
listenToAllAWTEvents)
5.) ein magnum gegessen
6.) jar archiv in die html datei eingebunden
7.) appletviewer -J-Djava.security.policy=meinePolicy
embedApplet.html
8.) mich geärgert als der fehler immer noch da
war !
Hoffe jemand hat ahnung wos hier zwickt .
Alexander