Applet Dateizugriff unter UNIX und TextListener Problem

Status
Nicht offen für weitere Antworten.

dystopic

Mitglied
Hallo alle zusammen,
ich hab zwei Probleme mit einem kleinen Applet (LZW Kompressions Demo Applet):

1. Das Applet verwendet einfache Textdateien zur Beispieleingabe. Hier der Code zum Datei öffnen:
Code:
//open the File and transform it to a string...
File compStream = new File(compExamplesFilenames[i]);
int compLength= (int)compStream.length();
FileInputStream compFileStream=new FileInputStream(compStream);
byte buffer[]= new byte[(int)compLength]; 
compLength = compFileStream.read(buffer,0,(int)compLength);
String compString= new String(buffer,0,(int)compLength);
//process string now...
compFileStream.close();
Das Problem ist, dass ich unter UNIX mit einer Security Exception abgewiesen werde, was an sich ja nicht so verwunderlich ist (unter win gehts logischerweise):
Code:
Exception in thread "AWT-EventQueue-2" java.security.AccessControlException: access denied (java.io.FilePermission HaenselUndGretel.txt 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.File.length(Unknown Source)
Ich dachte nur, dass Applets Dateien vom Server lesen können. Hat jemand ne elegante und praktikable Lösung für dieses Problem. Wie gesagt die Textdateien liegen auf dem Server und sollen ausschließlich gelesen werden.

2. Ich benutze ein TextArea in das ein Benutzer Text zum komprimieren eingeben kann. Wenn der Nutzer den Text editiert, soll das Applet resetted werden (interne Datenstrukturen zurück, GUI Reset etc.) Folglich gibt es einen passenden TextListener:
Code:
private TextListener uncompAreaListener = new TextListener() {	
   public void textValueChanged(TextEvent arg0) {
      //much code
   }
};
Das Problem ist, dass ich gerne Text in dem TextArea ausgeben möchte, ohne dass der Reset stattfindet. Der TextListener soll nur auf Benutzereingaben reagieren.
Ich habe es mit TextEvent.getID() und TextEvent.getSource() versucht aber daran lassen sich die Events nicht voneinander unterscheiden. (Immer TextChangedEvent und immer vom betreffenden TextArea, was eigentlich auch logisch ist).
Den TextListener zwischendurch abzumelden, ins Textfeld zu schreiben und den Listener wieder anzumelden funktioniert auch nicht, weil die interne Realisierung der API dafür nicht gemacht zu sein scheint. Der TextListener reagiert auf den TextValueChangedEvent auch rückwirkend, also wenn er zur Zeit des "Systemscheibens" im TextArea abgemeldet war.
Ich hoffe sehr mir kann jemand noch ne Idee zur Lösung dieses Problems geben, ich bin mit meinem Anfängerlatein im Moment am Ende.

In diesem Sinne!
 

Bleiglanz

Gesperrter Benutzer
1.
du liest ja gar nicht über den Server????
Ressourcen musst du schon über HTTP laden???
worldreadable auf dem Server (chmod a+r) machen?

2. du musst ein flag verwenden, damit du beim Textchange darauf reagieren kannst (ein einfaches boolean, das du bei "internen Änderungen" auf false setzt - und danach gleich wieder auf true...)
 

dystopic

Mitglied
Danke für die schnelle Antwort. Ich kann sie nur leider nicht richtig interpretieren befürchte ich.

Zum ersten Problem:
Die Dateien haben natürlich passende Zugriffsrechte, hatte ich leider vergessen zu erwähnen.

Ich lese nicht vom Server sagst Du, aber warum? Muss ich Dateien grundsätzlich als vollständige URI qualifizieren, oder habe ich einen anderen Denkfehler gemacht? Der relative Pfad beim Datei öffnen geht doch vom Ort des Applets aus oder nicht? Wie würde ein "lesen vom Server" aussehen?
Wie gesagt das Applet und die Textdateien liegen zusammen auf dem Server.

Abgewiesen werde ich, dachte ich, doch vom UNIX Dateisystem, da es unter Windows, wo die Zugriffskontrolle inaktiv ist, funktioniert.

Was meinst du genau mit "Ressourcen" in diesem Zusammenhang?

Zum zweiten:
Habe ich dich richtig verstanden, dein Vorschlag ist eine globale boolean Variable?
Ich hatte auch daran gedacht ein neuen Eventtyp abzuleiten, meine Hoffnung war aber das es eine weniger zeitaufwändige Lösung geben könnte.
 

Bleiglanz

Gesperrter Benutzer
1

vergiss das mit dem File? wozu gibts getImage im Applet??

java.applet.Applet#getImage

2

ich habs bisher nicht anderes lösen können

ignoreupdateevent=true;
// ändere Text
ingonreupdateevent = false;

und im Eventhandler dann als erste Zeile

if(ignoreupdateevent) return;

ist nur ne simple Möglichkeit, wie man die Verarbeitung eines Events in gewissen Situationen unterdrücken kann
 

dystopic

Mitglied
Ok das "Workaround" mit getImage() ist mir vom Prinzip her klar, aber wie wandele ich ein Image wieder in den String den ich haben möchte?
 
G

Guest

Gast
Jetzt bin ich vollkommen verwirrt.
Wenn ich ein Image nicht in einen String wandeln kann (was mich eh ein wenig gewundert hätte) wie kann mir dann getImage() bei meinem Problem denn helfen?
 

dystopic

Mitglied
Ups, da war ich gar nicht angemeldet....

Ich lese immer überall wie man Dateizugriff auf Clientseite macht, auf dem Heimatserver scheint es ja kein Problerm zu sein, nur finde ich nirgendwo was zu meinem Problem. (Google, Thinking in Java, etc.)

Es kann doch eigentlich nciht sein, dass ich die ganzen schweren Sicherheitsgeschütze auffahren muss, nur um eine Textdatei vom Heimatserver des Applets zu lesen, oder doch?

Wenn jemand eine geeignete Lesestelle im Web oder einfach nur ein bisschen Code hat der funktioniert, ist mir glaube ich schon geholfen.
 

Bleiglanz

Gesperrter Benutzer
NEIN

du kannst auf den "Heimatserver" ohne Probleme zugreifen (Nachladen von Bildern, Klassen, Texten....)
 

dystopic

Mitglied
Laut API Dokumentation etc. sollte ich das können und der im ersten Post geschriebene Code funktioniert unter Windows auch, aber es unter UNIX (Server) bzw. Linux (Desktop-System) kann ich trotz bestehender Dateizugriffsrechte eben nicht auf die Textdateien zugreifen. Es wäre sehr nett wenn jemand vielleicht ein wenig Code posten könnte, der definitiv auch unter UNIX funktioniert. Ich bin mit meinem Latein echt am Ende, zumal ich zwar UNIX/ Linux Nutzer aber sicher kein Crack bin.

Ich glaube kaum das ich der einzige bin mit diesem Problem, aber ich finde absolut nichts sinnvolles zu diesem speziellen Thema. Wie gesagt, eine passende Web Ressource würde mir auch schon helfen, vielleicht hat ja jemand noch ein Geheimtipp den ich bisher nicht gefunden habe.

Danke schonmal für die Mühe!
 

Bleiglanz

Gesperrter Benutzer
poste bitte mal code, wo geht was nicht? Welche Fehlermeldung??

unterscheide bitte

HTTP)Server: liefert Applet, von dem kann man nachladen

Client - Rechner - Webbrowser: zeigt Applet an

im Normalfall sind das ZWEI verschiedene Rechner, ein Applet kann nicht auf die Dateien des Clients zugreifen...
 
G

Guest

Gast
Ich kenne schon den Unterschied zwischen Server und Client. Nur, wenn ich ein Applet lokal gespeichert habe und im Browser starte ist mein Rechner gleichzeitig Sever und Client.

Zu der frage nach Code:
In meinem ersten Post ist der betreffende Code schon gepostet, inklusive der Exception. Ich weiß nicht genau was ich noch posten sollte...

In welcher Beziehung sollte ich etwas besser unterscheiden?

Nochmal im Schnelldurchlauf:
Ich hab ein Applet, das Textdateien lesen soll die im gleichen Verzeichnis des Servers liegen. Die Dateien haben volle Zugangsberechtigung auf UNIX Dateisystemebene. Ich kann die Dateien weder unter Linux noch unter UNIX öffnen (Exception siehe erster post im Thread) unter Windows aber schon. Das bedeutet ist das Applet auf einem UNIX bzw. Linux Server gespeichert geht es nicht, auf einem einfachen Windows (wohlgemerkt ohne aktivierte erweiterte NTFS Dateifreigabe) System funktioniert das Applet aber.
 
S

Spacerat

Gast
Wenn ich mir das genau betrachte, möchtest du gar kein Image laden, sondern schlicht und ergreifend nur eine Text-Datei richtig? Dazu reicht es aus, wenn man die Zeile
Code:
FileInputstream compFileStream=new FileInputStream(compStream);
wie folgt abändert:
Code:
InputStream compFileStream = this.getClass().getRessourceAsStream(compStream);
Natürlich muß "compStream" dabei eine Datei oder ein Verzeichnis sein, welches (man achte auf die Sicherheitseinschränkungen) vom Applet erreicht werden kann.
"compStream" darf auch auf ein relatives ("./" od. "../") Verzeichnis oder Datei zeigen. "compStream" muß dabei wie folgt behandelt werden.
Code:
try {
    compStream = (new URL(getDocumentBase(), compStream)).toExternalForm();
} catch (MalformedURLException e) {
}
Das dein Applet auf einem Windows System läuft liegt nicht zwangsläufig an irgendwelchen Rechte-Freigaben. Wenn man ein Applet z.B. aus Eclipse heraus (im AppletViewer) startet bekommt das Applet alle Rechte wie eine normale Java-Klasse. Also auch Datei-Zugriff über das FILE: Protokoll. Das ist bei einem im Browser gestartetem Applet nicht der Fall. Deshalb kann ein Applet nicht (z.B. per FileInputStream wie bei dir) auf das Filesystem zugreifen, sondern nur auf Dateien die über das HTTP: Protokoll erreichbar sind (mal 'ne allg. Frage von mir: Sind hier eigentlich noch andere Protokolle möglich? z.B. FTP?). Wenn man es versucht bekommt man diese ("allseits beliebte") Access denied-Exception.

cu Spacerat
 
G

Guest

Gast
Danke Spacerat, das ist ziemlich sicher die Lösung meines Problems und genau das was ich die ganze Zeit gesucht habe. Heute ist es ein wenig spät, aber ich werds morgen oder übermorgen auf jeden Fall mit Deinem Vorschlag ausprobieren.

Nochmal zu Deiner Anmerkung bezüglich Windows: Das Applet läuft unter Windows, egal ob ich es von Eclipse compilieren lasse oder per Hand compilere auch unter Browsern. Woran es jetzt genau liegt vermag ich nicht zu sehen, ich dachte nur das es das Unix Filesystem sein könnte, da das unter Win überhaupt nicht auftrat.
 

dystopic

Mitglied
Ich kann mich nicht dran gewöhnen dass man hier auch als unangemeldeter Gast posten kann...

Andere Protokolle meinst du? Hätte das denn einen echten Mehrwert gegenüber HTTP? MIr fällt keine Situation ein, in der ein FTP Zugriff auf den Heimatserver des Applets nötig wäre. Wenn ich das Sicherheutskonzept in seinen Grundzügen richtig verstanden habe, muss man bei einem Zugriff auf einen anderen Server sofort die ganzen Sicherheitssysteme (Signierung etc.) benutzen oder?
 
S

Spacerat

Gast
@dystopic: Wenn ich's recht bedenke... Irgendwie hast du recht. Macht irgendwie keinen Sinn.

cu Spacerat
 
G

Gast

Gast
try {
compStream = (new URL(getDocumentBase(), compStream)).toExternalForm();
} catch (MalformedURLException e) {
}

Von welchem Typ ist denn compStream ? So wird das ja nicht funktonieren...
 

dystopic

Mitglied
Danke nochmal an alle für die Mühe!

Ich hab Lösungen für beide Probleme gefunden.
Ich werde die noch etwas aufpolieren und dann hier posten.
 
G

Guest

Gast
Dieser Code zum Textdatei lesen funktioniert:
Code:
String buffer;
String compString= "";
//open the new InputStream (the textfile) and read the stored compressed string line by line
InputStream compStream = this.getClass().getResourceAsStream("./"+compExamplesFilenames[i]);
BufferedReader input = new BufferedReader(new InputStreamReader(compStream));
while ((buffer= input.readLine()) != null){
         compString = compString + buffer+ "\n";
}

Für das Textlistener Problem habe ich eine globale boolean Variable eingeführt, die ich im Listener abfragen kann und die er wieder zurücksetzt. Wenn das Applet also in das entsprechende Textfeld schreiben will, muss das Flag vorher gesetzt werden.

Nochmal danke für die Hilfe!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Applet mit Datenbank- und lokalem Dateizugriff Tools - Maven, Gradle, Ant & mehr 11
R Dateizugriff Applet Tools - Maven, Gradle, Ant & mehr 15
C Applet Netzzugriff und Dateizugriff Tools - Maven, Gradle, Ant & mehr 3
L Dateizugriff von Client auf Server über Applet Tools - Maven, Gradle, Ant & mehr 7
B Applet: com.sun.deploy.security.BlockedException :-( Tools - Maven, Gradle, Ant & mehr 0
M Applet Applet legt Browser lahm Tools - Maven, Gradle, Ant & mehr 3
J Applet Aus anderer Browserinstanz Applet abfragen Tools - Maven, Gradle, Ant & mehr 2
P Linux Applet/Webstart Schriftunterschiede Tools - Maven, Gradle, Ant & mehr 3
E JMol -Applet Einbindung Tools - Maven, Gradle, Ant & mehr 0
T Applet Applet und IText wirft Incompatible magic value 1008813135 Fehler Tools - Maven, Gradle, Ant & mehr 6
P Applet Java Applet läuft im Browser nicht mehr (HTTPClient - NoClassDefFoundError) Tools - Maven, Gradle, Ant & mehr 3
P Applet Applet Signatur auf Server mit SSL-Zertifikat? Tools - Maven, Gradle, Ant & mehr 7
H Applet Applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 2
M Applet Applet funktioniert in Google Chrome nicht Tools - Maven, Gradle, Ant & mehr 2
O Applet "Anwendung kann nicht ausgeführt werden" Tools - Maven, Gradle, Ant & mehr 6
Q Applet Fehlermeldung bei Applet-Wechsel Tools - Maven, Gradle, Ant & mehr 4
T Daten per POST-Methode aus Java-Applet nach php-Script senden Tools - Maven, Gradle, Ant & mehr 3
R Applet friert Adresszeile des Firefox ein Tools - Maven, Gradle, Ant & mehr 2
K Applet als Jar-Datei in HTML einbinden Tools - Maven, Gradle, Ant & mehr 14
H Applet-Fehlermeldung Tools - Maven, Gradle, Ant & mehr 10
H Applet läuft nicht im Browser Tools - Maven, Gradle, Ant & mehr 3
Q Applet Applet läuft nicht im Browser Tools - Maven, Gradle, Ant & mehr 14
J Applet URL mittels TTS als Applet lesen lassen Tools - Maven, Gradle, Ant & mehr 40
F Applet verwischt, wenn Seite gescrollt wird Tools - Maven, Gradle, Ant & mehr 16
S Applet Applet mit C# öffnen: java.lang.SecurityException: Permission denied (WinXP) Tools - Maven, Gradle, Ant & mehr 8
J Applet-Quellcode einsehen Tools - Maven, Gradle, Ant & mehr 6
E Applet Applet und Datenbank Konzept Tools - Maven, Gradle, Ant & mehr 4
A Applet: Html Datei und Class Datei nicht im selben Verzeichnis Tools - Maven, Gradle, Ant & mehr 2
S Applet soll Textdatei von fremdem Server öffnen Tools - Maven, Gradle, Ant & mehr 8
E Java Applet bearbeiten Tools - Maven, Gradle, Ant & mehr 8
Quasar Wie signiere ich mein Applet richtig? Tools - Maven, Gradle, Ant & mehr 6
M mit Applet Javascript Aufrufen Tools - Maven, Gradle, Ant & mehr 2
S Applet and stop() method und gui blocked Tools - Maven, Gradle, Ant & mehr 4
A Applet Applet startet nach Einbinden auf Website nicht Tools - Maven, Gradle, Ant & mehr 4
A Applet, xxx.jar und hsqldb Tools - Maven, Gradle, Ant & mehr 4
T Webstart oder Applet Tools - Maven, Gradle, Ant & mehr 2
H Applet applet neu laden im browser Tools - Maven, Gradle, Ant & mehr 10
M Applet neustart Tools - Maven, Gradle, Ant & mehr 5
S Applet request unter Linux Tools - Maven, Gradle, Ant & mehr 14
S Applet GUI nicht im Webbrowser sichtbar Tools - Maven, Gradle, Ant & mehr 5
S Mittel Applet Datei an ein Webserver übertragen Tools - Maven, Gradle, Ant & mehr 2
M Applet in ClientServer J2EE Anwendung debugen Tools - Maven, Gradle, Ant & mehr 6
H Java Applet Problem beim einbinden in HTML Tools - Maven, Gradle, Ant & mehr 3
M Java3D Applet flackert wenn ein Button(HTML) gedrückt wird Tools - Maven, Gradle, Ant & mehr 11
S Policy mit Signiertem Applet verteilen Tools - Maven, Gradle, Ant & mehr 9
F Applet findet include nicht Tools - Maven, Gradle, Ant & mehr 15
L PHP + Java Applet Kommunikation Tools - Maven, Gradle, Ant & mehr 9
C Probleme mit Applet mit SQL im Browser Tools - Maven, Gradle, Ant & mehr 4
G Java-Applet Probleme beim Browser Tools - Maven, Gradle, Ant & mehr 14
G Textfile in Applet laden möglich? Tools - Maven, Gradle, Ant & mehr 2
A Java-Applet Sandbox deaktiviren? Tools - Maven, Gradle, Ant & mehr 2
B Java-Applet geht nicht (auf dem Webserver) Tools - Maven, Gradle, Ant & mehr 9
P Applet läuft nicht in Browser Tools - Maven, Gradle, Ant & mehr 21
V JAR-Datei eines (J)Applet funktioniert nicht - Help! Tools - Maven, Gradle, Ant & mehr 19
S Java Applet per Klick starten? Tools - Maven, Gradle, Ant & mehr 6
S Applet geht nicht Tools - Maven, Gradle, Ant & mehr 25
J Applet signieren Tools - Maven, Gradle, Ant & mehr 2
H Applet - Geschicklichkeitsspiel programmieren Tools - Maven, Gradle, Ant & mehr 16
U Jar funktioniert nicht als Applet Tools - Maven, Gradle, Ant & mehr 3
C Applet Frage Tools - Maven, Gradle, Ant & mehr 4
M Java Applet - enforce use of older JRE Tools - Maven, Gradle, Ant & mehr 3
N Wie Java-Programm zu Applet machen?! Tools - Maven, Gradle, Ant & mehr 2
W Webseite aus Applet öffnen Tools - Maven, Gradle, Ant & mehr 3
lumo Applet - resize Tools - Maven, Gradle, Ant & mehr 7
Icewind Applet reagiert nach neu laden der Webseite nicht mehr verlässlich auf KeyEvents Tools - Maven, Gradle, Ant & mehr 6
R Applet mit MySQL Tools - Maven, Gradle, Ant & mehr 3
A jar datei trotz zertifikat nich aus applet ausführbar Tools - Maven, Gradle, Ant & mehr 4
F Fehlende Applet Rechte Tools - Maven, Gradle, Ant & mehr 12
N [Applet] Button wir nach 5 secs Unsichtbar Tools - Maven, Gradle, Ant & mehr 2
N jar -> applet wie setzt man das am leichtesten um Tools - Maven, Gradle, Ant & mehr 7
V applet Java 1.6 -> 1.5 Problem ... wie mit Ant zu lösen? Tools - Maven, Gradle, Ant & mehr 7
F applet als JAR -> AccessControlException Tools - Maven, Gradle, Ant & mehr 3
grudge File in Applet laden Tools - Maven, Gradle, Ant & mehr 4
E Java Applet - Double Buffering Problem (Flackern) Tools - Maven, Gradle, Ant & mehr 6
R Applet mit bestimmter JRE ausführen Tools - Maven, Gradle, Ant & mehr 9
traysa Wie binde ich ein applet in eine jsp Tools - Maven, Gradle, Ant & mehr 3
D Mit dem Applet das DOM manipulieren? Tools - Maven, Gradle, Ant & mehr 3
ABstraCT Applet getCodeBase() Zugriff auf darüberliegendenden Ordner ? Tools - Maven, Gradle, Ant & mehr 1
S Java-Applet Steuerung IO Karte am Drucker-Port Tools - Maven, Gradle, Ant & mehr 4
P URL aus Applet öffnen? Tools - Maven, Gradle, Ant & mehr 7
ABstraCT Mit Applet in ne Datei auf seinem Server schreiben. Tools - Maven, Gradle, Ant & mehr 10
E Verzögerung beim Refresh (F5) mit einem Applet verursachen Tools - Maven, Gradle, Ant & mehr 16
deetee Applet Frage Tools - Maven, Gradle, Ant & mehr 2
S Fehler in einem Upload - Applet (nicht gelöst!!) Tools - Maven, Gradle, Ant & mehr 2
G Variable an zweites Applet übergeben Tools - Maven, Gradle, Ant & mehr 3
M Dringend: Sehr kompliziertes Applet Problem Tools - Maven, Gradle, Ant & mehr 4
O Javascript kommuniziert mit Applet? Tools - Maven, Gradle, Ant & mehr 2
H Spracherkennung mit Applet / Policy bzw. Security Fehler Tools - Maven, Gradle, Ant & mehr 2
zilti Nerviger Hinweis bei Applet- und WS-Fenstern - wieso? Tools - Maven, Gradle, Ant & mehr 3
S Datei-/Verzeichniszugriff von signiertem Applet Tools - Maven, Gradle, Ant & mehr 6
G Signiertes Applet installieren? Tools - Maven, Gradle, Ant & mehr 3
G Applet mit Parameter aus JavaScript Tools - Maven, Gradle, Ant & mehr 5
A Applet Maus Koordinaten ohne MouseMotionListener Tools - Maven, Gradle, Ant & mehr 3
K Applet in Eclipse funktioniert, im Browser nicht Tools - Maven, Gradle, Ant & mehr 7
T Applet soll Java Programm starten Tools - Maven, Gradle, Ant & mehr 2
S Applet pai.nt? Tools - Maven, Gradle, Ant & mehr 3
S Applet und File-Object? Tools - Maven, Gradle, Ant & mehr 9
T Applet soll Datei lesen (darf es aber nicht.) Tools - Maven, Gradle, Ant & mehr 3
P Java-Applet funktioniert unter WINXP nicht Tools - Maven, Gradle, Ant & mehr 2
N Java 1.6 Applet auf älteren Versionen ausführbar? Tools - Maven, Gradle, Ant & mehr 4

Ähnliche Java Themen

Neue Themen


Oben