2012-04-08 3 views
1

Javaアプレットでは、一部のファイルを読み込むためにいくつかのフォルダを使用する必要があります。フォルダは適切な場所にあり、index.html(アプレットを実行する)と同じディレクトリにあります。ここでエラーがJAppletのが出してくれるということです:あなたが見ることができるようにJavaアプレットのファイルアクセス許可のエラー

java.lang.reflect.InvocationTargetException 
    at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(DeployAWTUtil.java:116) 
    at sun.plugin2.applet.Plugin2Manager.runOnEDT(Plugin2Manager.java:3541) 
    at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3072) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1497) 
    at java.lang.Thread.run(Thread.java:680) 
Caused by: java.security.AccessControlException: access denied (java.io.FilePermission ./results read) 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) 
    at java.security.AccessController.checkPermission(AccessController.java:546) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 
    at java.lang.SecurityManager.checkRead(SecurityManager.java:871) 
    at java.io.File.list(File.java:971) 
    at java.io.File.listFiles(File.java:1129) 
    at WhoHasMore.JShellFrame.getDefaultResultsFileName(JShellFrame.java:453) 
    at WhoHasMore.JShellFrame.<init>(JShellFrame.java:28) 
    at WhoHasMore.<init>(WhoHasMore.java:23) 
    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.plugin2.applet.Plugin2Manager$13.run(Plugin2Manager.java:3060) 
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:677) 
    at java.awt.EventQueue.access$000(EventQueue.java:85) 
    at java.awt.EventQueue$1.run(EventQueue.java:638) 
    at java.awt.EventQueue$1.run(EventQueue.java:636) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:647) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 
Exception: java.lang.reflect.InvocationTargetException 

は、エラーが「結果」というフォルダからの読み取りに

Caused by: java.security.AccessControlException: access denied (java.io.FilePermission ./results read) 

なぜアクセスが拒否されましたから来ているように見えますか?これをどうやって解決するのですか?

答えて

1

使用しようとしている方法(java.io.File.listFiles)はHTTPで動作しません。既知のURLにあるテキストファイルにファイルのリストを置き、ダウンロードしたり、アプレットのjarfileに追加するなど、ファイルをリストする別の方法を選択する必要があります。

0

「結果」というフォルダから読み取るアクセスが拒否されるのはなぜですか?

Javaサンドボックスは、アプレットがユーザーのマシン上のファイルシステムにアクセスできないようにしています。

これはどのように修正できますか?

あなたのアプレットがこの種のものを行うことができるようにしたい場合は、必要があります。

  • が署名したJARを作成し、
  • は、証明書/ JARファイルを受け入れるようにユーザーを取得します信頼できるアプリケーションとして。
+0

どうすればいいですか?これに必要なコードは何ですか? – CodeGuy

+0

ポリシーファイルを使用して行うことはできますか?もしそうなら、どのようにすればいいのですか?ファイル名はどうすればいいですか?ポリシーファイルはどこにありますか? – CodeGuy

+0

* "フォルダは適切な場所にあり、index.html(アプレットを実行します)と同じディレクトリにあります。" *これはクライアントファイルシステムではなく、サーバーです。 @ duskwuffは正しいアプローチをとった。 –

関連する問題