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.
Ich schreibe mir gerade ein Applet mit Eclipse.
Mit dem Eclipse Vorschau Applet Viewer geht auch alles super, doch wenn ich dieses mit einem Browser versuche, dann passiert nicht wenn ich auf meinen "Login Button" drücke, woran könnte das liegen?
Rechte Problem könnte sein, da ich aus einer Datei lese.
EDIT:
Habe es hinbekommen. Ich lese die Usernamen die sich einloggen dürfen aus einer DAtei. Als ich den kompletten Pfad zu dieser Datei angegeben habe ging es!
hmm Lokal auf meinem PC geht es nun, wenn ich die Sachen auf meinen WebSpace hochlade, wird das Applet wieder nicht geldaen mit:
java.security.AccessControlException: access denied (java.io.FilePermission http:\iceti.ic.funpic.de\ESE\bin\users.xml read)
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.checkRead(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at Users.getAllUser(Users.java:46)
at Main.init(Main.java:186)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Hmm, so richtig hinbekommen habe ich das nicht.
Wohin muss ich die JAR Datei kopieren und was genau muss hier hin??
if exist *.jar goto key
echo jar-Datei mit angegebenen Parametern erzeugen...
rem --> anpassen!
rem * In diesem Beispiel werden alle .class-Dateien und die Verzeichnisse bilder und etc
rem * mit ins jar-Archiv gepackt.
jar cfmv MeinJar.jar manifest.mf *.class users.xml
<HTML>
<HEAD>
<TITLE>Applet HTML Page</TITLE>
</HEAD>
<BODY>
<applet archive="MeinJar.jar" codebase="bin" code="Main.class" width="640" height="480">
Aktivieren Sie bitte die Java-Unterstützung für Ihren Browser!
</applet>
</BODY>
</HTML>
Nimm mal für's erste das codebase-Attribut heraus. Das wird nur gebraucht, wenn das Applet auf einem anderen Rechner liegt, als die einbettende HTML-Datei.
IceTi hat gesagt.:
doch wenn ich das Apllet hochlade findet ihr die DAtei nun wieder nicht.
Du meinst die XML-Datei? Die musst du über einen Stream ins Applet laden, sonst wird immer auf dem Client-Rechner gesucht, wenn das Applet die Rechte hat.
Genau... die XML Datei.
Wie lade ich die den über einen Stream ins Applet?
Hier die Ausgabe:
java.io.FileNotFoundException: C:\Dokumente und Einstellungen\***\workspace\Test\bin\users.xml (Das System kann den angegebenen Pfad nicht finden)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at Users.getAnzahlUser(Users.java:137)
at Users.getAllUser(Users.java:62)
at Main.init(Main.java:204)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
at Main$2.getSize(Main.java:210)
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source)
at javax.swing.plaf.basic.BasicListUI.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at javax.swing.ScrollPaneLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at sun.plugin.util.GrayBoxPainter.suspendPainting(Unknown Source)
at sun.plugin.AppletViewer.showAppletStatus(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Also, die XML-Datei befindet sich mit im Jar-Archiv? Dann kannst du Folgendes machen:
Um das Maß an Flexibilität und Wiederverwendung zu erhöhen, kannst du dem Applet von außen, also über die HTML-Datei, deine XML-Datei bekannt machen.
java.lang.NullPointerException
at Main.init(Main.java:129)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
at Main.init(Main.java:129)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Meine init() sieht so aus:
Code:
public void init() {
String textfile = getParameter("TextFile");
if(textfile == null) {
JOptionPane.showMessageDialog(this, "Fehlender Parameter: <param name=\"TextFile\" value=\"[relative URL]\">");
}
try {
url = new URL(getCodeBase()+textfile); //die Textdatei befindet sich neben dem Applet
reader = new BufferedReader(new InputStreamReader(url.openStream()));
String line = null;
while((line = reader.readLine()) != null) {
lines.add(line); <---- ZEILE 129 !!!!!
}
}
catch(MalformedURLException e) {
JOptionPane.showMessageDialog(this, e.getMessage());
}
catch(IOException e) {
JOptionPane.showMessageDialog(this, e.getMessage());
}
[...]
Und in der Klasse Users sieht es so aus:
Code:
br = new BufferedReader (new FileReader ("users.xml"));
Hast du auch daran gedacht den Vector zu instanziieren?
Code:
lines = new Vector();
Ein wenig mitdenken sollte man schon...
Es handelt sich hierbei um Beispielcode, nicht um eine fertige Lösung.
Du hast dann quasi sämtliche Zeilen deiner XML-Datei in einen Vector eingelesen.
Was du du damit anfängst, musst du selbst wissen.
Wenn das Applet darauf schreiben könnte, dann könnte es jeder.
Ein Applet ist nichts anderes als ein paar class Dateien die sich der Client automatisiert runterlädt und lokal ausführt.
Und? Wo ist deine Fehlermeldung, dein Code oder weitere Informationen, die uns helfen dir zu helfen?
Brauchst du noch Hilfe? Ich hab bald keine Lust mehr, dir alles aus der Nase ziehen zu müssen.
Alle Dateien (also die *.class,die html-Seite, die users.xml und die *.jat Datei) befinden sich in einem Ordner.
Auf die users.xml Datei greife ich wie folgt zu (einmal zum lesen und einmal zum schreiebn):
Code:
[...]
br = new BufferedReader (new FileReader ("users.xml"));
[...]
bw = new BufferedWriter (new FileWriter ("users.xml"));
[...]
Wenn ich die html-Seite Lokal auf meinem Notebook ausführe, wo ich auch das Projekt angelgt habe, dann klappt alles, lade ich die Sachen auf einen Webspace kommt folgende Meldung:
Code:
java.io.FileNotFoundException: users.xml (Das System kann die angegebene Datei nicht finden)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at Users.getAnzahlUser(Users.java:136)
at Users.getAllUser(Users.java:62)
at Main.init(Main.java:256)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
at Main$5.getSize(Main.java:262)
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source)
at javax.swing.plaf.basic.BasicListUI.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at javax.swing.ScrollPaneLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at sun.plugin.util.GrayBoxPainter.suspendPainting(Unknown Source)
at sun.plugin.AppletViewer.showAppletStatus(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Die HTML-Seite sieht so aus:
Code:
<HTML>
<HEAD>
<TITLE>Applet HTML Page</TITLE>
</HEAD>
<BODY>
<center>
<applet archive="MeinJar.jar" code="Main.class" width="640" height="480">
Aktivieren Sie bitte die Java-Unterstützung für Ihren Browser!
</applet>
</center>
</BODY>
</HTML>
Signiert habe ich das Applet mit diesem Script von dir (L-ectron-X).
Hmm welceh Infos braucht ihr noch.
Sorry nochmal, werde mich jetzt nicht mehr so doof anstellen.
Wie bereits erwähnt läuft ein Applet auf dem Client Rechner.
new FileReader ("users.xml")
Versucht also eine solche Datei auf dem Client zu öffnen.
Entweder du packst alles zusammen in ein jar, oder du lädst die Datei mit einer URL Connection vom Server.
Ich weiss es doch auch nicht.
Das stellt mich vor ein ziemlich großem Problem.
Oder wie würdert ihr eine Benutzerverwaltung realisieren (wo man Benutzer löschen, anlegen, bearbeiten kann) ohne die DAten in eine Datei oder Datenbank zu schreiben MIT EINEM APPLET....
How do I let an applet write a file?
Applets loaded into a Java-enabled browser can't write files.
Sun's appletviewer allows applets to write files that are named on the access control list for writing. The access control list for writing is empty by default.
You can allow applets to write to your /tmp directory by setting the acl.write property in your ~/.hotjava/properties file:
acl.write=/tmp
You can allow applets to write to a particular file by naming it explicitly:
acl.write=/home/me/somedir/somefile
Use : to separate entries:
acl.write=/tmp:/home/me/somedir/somefile
Bear in mind that if you open up your file system for writing by applets, there is no way to limit the amount of disk space an applet might use.
Nur dann brauche ich diesesn speziellen Sun Applet Viewer wie es aussieht oder ?
Habe mich nun entschieden das auslesen mit derMEthode von L-ectron-X und dem Vector zu machen, dass schrieben muss ich dann wohl über einen Socket zum Server erledigen.
Eine Frage habe ich da nochmal zu dem Vector bzw. das auslesen der DAtei darüber, kann ich den Vector währenmd der Laufzeit aktuelsierenn oder geht das nur in init() ??
Schreib dir einfach eine Methode, die die Datei im Bedarfsfall ausliest. Den Aufruf der Methode kannst du von Ereignissen abhängig machen. (Button klicken, per Thread nach Ablauf einer Pausenzeit etc.).