U-- °LoneWolf° Geschrieben 24. März 2010 Geschrieben 24. März 2010 Hi zusammen, ich habe mir ein kleines applet geschrieben import java.applet.*; import java.awt.*; import java.util.*; import java.lang.*; import java.text.*; import java.awt.event.*; import java.io.*; public class localfile extends Applet { public localfile() { Panel p = new Panel(); Font f; String osname = System.getProperty("os.name",""); if (!osname.startsWith("Windows")) { f = new Font("Arial",Font.BOLD,10); } else { f = new Font("Verdana",Font.BOLD,12); } p.setFont(f); p.add(new Button("Open")); p.setBackground(new Color(255, 255, 255)); add("North",p); } public boolean action(Event evt, Object arg) { if (arg.equals("Open")) { System.out.println("OPEN CLICKED"); int arrlen = 10000; byte[] infile = new byte[arrlen]; Frame parent = new Frame(); FileDialog fd = new FileDialog(parent, "Please choose a file:", FileDialog.LOAD); fd.show(); String selectedItem = fd.getFile(); if (selectedItem == null) { // no file selected } else { File ffile = new File( fd.getDirectory() + File.separator + fd.getFile()); // read the file System.out.println("reading file " + fd.getDirectory() + File.separator + fd.getFile() ); try { FileInputStream fis = new FileInputStream(ffile); BufferedInputStream bis = new BufferedInputStream(fis); DataInputStream dis = new DataInputStream(bis); try { int filelength = dis.read(infile); String filestring = new String(infile, 0, filelength); System.out.println("FILE CONTENT=" + filestring); FileOutputStream fop=new FileOutputStream(ffile); String str="This data is written through the program"; fop.write(str.getBytes()); fop.flush(); fop.close(); System.out.println("The data has been written"); } catch(IOException iox) { System.out.println("File read error..."); iox.printStackTrace(); } } catch (FileNotFoundException fnf) { System.out.println("File not found..."); fnf.printStackTrace(); } } } else if (arg.equals("Save")) { System.out.println("Save CLICKED"); int arrlen = 10000; byte[] infile = new byte[arrlen]; Frame parent = new Frame(); FileDialog fd = new FileDialog(parent, "Please choose a file:", FileDialog.LOAD); fd.show(); String selectedItem = fd.getFile(); if (selectedItem == null) { // no file selected } else { File ffile = new File( fd.getDirectory() + File.separator + fd.getFile()); // read the file System.out.println("reading file " + fd.getDirectory() + File.separator + fd.getFile() ); try { FileInputStream fis = new FileInputStream(ffile); BufferedInputStream bis = new BufferedInputStream(fis); DataInputStream dis = new DataInputStream(bis); try { int filelength = dis.read(infile); String filestring = new String(infile, 0, filelength); System.out.println("FILE CONTENT=" + filestring); } catch(IOException iox) { System.out.println("File read error..."); iox.printStackTrace(); } } catch (FileNotFoundException fnf) { System.out.println("File not found..."); fnf.printStackTrace(); } } } else return false; return true; } } und es mit folgenden befehlen signiert C:\Programme\Java\jdk1.6.0_18\bin\keytool -genkey -keyalg rsa -alias yourkey C:\Programme\Java\jdk1.6.0_18\bin\keytool -selfcert -alias yourkey C:\Programme\Java\jdk1.6.0_18\bin\keytool -export -alias yourkey -file yourcert.crt C:\Programme\Java\jdk1.6.0_18\bin\javac "applet fileaccess\beispiel1\localfile.java" C:\Programme\Java\jdk1.6.0_18\bin\jar cvf "applet fileaccess\beispiel1\localfile.jar" "applet fileaccess\beispiel1\localfile.class" C:\Programme\Java\jdk1.6.0_18\bin\jarsigner "applet fileaccess\beispiel1\localfile.jar" yourkey C:\Programme\Java\jdk1.6.0_18\bin\jarsigner -verify -verbose -certs "applet fileaccess\beispiel1\localfile.jar" so weit klappt auch alles ... nur beim schreiben tritt folgender fehler auf OPEN CLICKED reading file C:\Dokumente und Einstellungen\Desktop\applet fileaccess\beispiel1\\testfile.txt FILE CONTENT=TEST DATEN Exception in thread "AWT-EventQueue-2" java.security.AccessControlException: access denied (java.io.FilePermission C:\Dokumente und Einstellungen\Desktop\applet fileaccess\beispiel1\testfile.txt write) 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.checkWrite(Unknown Source) at java.io.FileOutputStream.<init>(Unknown Source) at java.io.FileOutputStream.<init>(Unknown Source) at localfile.action(localfile.java:55) at java.awt.Component.handleEvent(Unknown Source) at java.awt.Component.postEvent(Unknown Source) at java.awt.Component.postEvent(Unknown Source) at java.awt.Component.postEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) ...lesen ist kein problem aber das schrieben funktioniert nicht ... des weitern war in allen anleitung von einem abfrage fensetr die rede in dem der anwender gefragt wird ob er dem zertifikat zustimmt. das gennante fenster erscheint aber nicht ... hat einer nen tipp? vlg wolf Zitieren
elSusto Geschrieben 26. März 2010 Geschrieben 26. März 2010 sieht auf jeden fall danach aus das du nich die nörigen rechte hast. 1. Privileged Block API 2. jnlp datei schreiben, dort kannst du verschiedene rechte angeben die du brauchst. 3. natürlich musst du auch das signieren weiterhin machen. achja leer mal den chache vom browser. Dieses fenster mit dem akzeptieren muss auf jeden fall kommen. Ich hab leztens auch ein applet geschrieben in dem brauchte ich die privileged action und die jnlp datei zum starten und natürlich das signieren. Als alternative zu der jnlp datei kannst du auch ein einfaches textfile schreiben in dem du die rechte angibst die du haben willst. Weiß gerade nicht wie die heißt. Zitieren
U-- °LoneWolf° Geschrieben 27. März 2010 Autor Geschrieben 27. März 2010 Hi zusamen Danke, ich war einfach zu deppert zum signieren ... bzw. zum jar bauen ... wenn das jarr bei der generierung den gesamten ablagepfad enthält usw. ist das irgendwie nicht so gut... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.