Probleme beim schreiben der Datei in einem java-applet
Habe ich erstellt einfache Java-Klasse test-Datei schreibt von applets:
update erschienen
public class localfile extends Applet{
public localfile(){
try {
File f = new File("testfile.txt");
BufferedWriter out = new BufferedWriter(new FileWriter(f,true));
out.write("test");
out.close();
}
catch(Exception x)
System.err.println(x.toString());
}
}
Habe ich erstellt und signiert Glas:
jar cvf localfile.jar localfile.java
jarsigner localfile.jar yourkey
html sieht wie folgt aus:
<applet code="localfile.class" archive="localfile.jar", width=300, height=600
>
Den Fehler bekomme ich jedes mal, wenn ich dieses applet ist:
java.lang.SecurityException: trusted loader attempted to load sandboxed resource from file:/home/w/test/
at com.sun.deploy.security.CPCallbackHandler$ParentCallback.check(CPCallbackHandler.java:308)
at com.sun.deploy.security.CPCallbackHandler$ParentCallback.access$1400(CPCallbackHandler.java:121)
at com.sun.deploy.security.CPCallbackHandler$ChildElement.checkResource(CPCallbackHandler.java:473)
at sun.plugin2.applet.Plugin2ClassLoader.checkResource(Plugin2ClassLoader.java:701)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Applet2ClassLoader.java:206)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Plugin2ClassLoader.java:520)
at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:2940)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1444)
at java.lang.Thread.run(Thread.java:619)
Exception: java.lang.SecurityException: trusted loader attempted to load sandboxed resource from file:/home/w/test/
Was seltsam ist: ich habe ähnliche applet-Dateien Lesen, und es funktioniert ok.
Irgendwelche Gedanken?
Lief ich dieses applet auf beiden browser und applet-viewer. Was ist seltsam, da applet funktioniert nicht auf applet-viewer und wirft die Ausnahme, aber auf browser-es ist in Ordnung.
java.security.AccessControlException: access denied (java.util.PropertyPermission java.security.policy write)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.System.setProperty(System.java:725)
at localfile.<init>(localfile.java:15)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:785)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:714)
at sun.applet.AppletPanel.run(AppletPanel.java:368)
at java.lang.Thread.run(Thread.java:619)
So, neben diesem seltsamen Verhalten, ich denke, dass mein problem gelöst. Vielen Dank an alle:)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit einigen Tricks können Sie eine policy-Datei in einer jar. Siehe ALSO Frage jar-policy-Datei für weitere Informationen.
Andernfalls erwägen, eine Java-WebStart-Anwendung, die den lese - /Schreibzugriff können Dateien leichter.
Haben Sie eine Politik zu ermöglichen, Lesen von Dateien aus dem Dateisystem?
Scheint, dass Sie nur unterzeichnet, das Glas aber nicht policytool.
http://java.sun.com/docs/books/tutorial/security/tour1/step2.html
Diese sollen Ihnen helfen, sich mit dem erstellen der policy-Datei und verknüpfen mit Ihrer code-Basis
Wusste ich, das ist ziemlich spät. Aber nur wer helfen sehen-bis zu dieser Fehler -
Mit Hilfe von Ant, mehrere Gläser unterzeichnet werden kann, in einem Schuss, zum Beispiel java-comm.jar etc
Diese wil Unterschreiben alle jar in das Verzeichnis.
Ich glaube, dein problem ist, dass die Verzeichnisse inklusive der Datei, die Sie versuchen zu laden, ist in der codebase, wo die class-Dateien und Ressourcen der Anwendung gesucht werden. Also, Sie am Ende mischen von vertrauenswürdigen und nicht vertrauenswürdigen Ressourcen, die nicht sicher ist. Wenn das applet gehostet wird auf einem http oder besser https-server dann das Problem entsteht nicht für Dateien.
Hinweis Sie können die JNLP-APIs für applets auf "öffnen" oder schreiben von Dateien über ein Datei-dialog.
Ihre Ressource-handling lässt sich die Datei öffnen, im Falle von Ausnahmen. Ressource-handling sollte in dem Stil geschrieben:
In Ihrem speziellen Fall: