0

Webページ内にアプレットを作成しましたが、実行すると次のようになります。

Exception in thread "Thread-13" java.security.AccessControlException: access denied ("java.io.FilePermission" "defensebg.png" "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.canRead(Unknown Source)
    at javax.imageio.ImageIO.read(Unknown Source)
    at Defense.run(Defense.java:63)
    at java.lang.Thread.run(Unknown Source)

これを修正するにはどうすればよいですか?

4

2 に答える 2

3

私はあなたのアプレットについて少し知っていて、これらの画像はアプリケーションの固有の部分であると確信しているので、paulms4に別の方法を取ります。

Fileインスタンスを忘れてください。それらはこのために実行可能でも、必要でもありません。信頼できるアプレットのみがにアクセスできますがFile、それでも、アプレットが確立できるFile場所は、ユーザーのPCのファイルシステム上の場所を指す場所だけです。明らかに、アプレットの画像はその方法では利用できません(OK-ブラウザのキャッシュにある可能性がありますが、それは私たちには役に立ちません)。

によってアプレットリソースにアクセスする方が一般的(かつ簡単)URLです。URLは、アプレットのコードベースまたはドキュメントベースを基準にして確立できます。画像が実際にJar内にある場合、それらは埋め込みリソースになります-情報を参照してください。URLを取得する方法についてのページ。

'読み取り専用'リソースをロードするJ2SEのほとんどのメソッドはFileURLまたはを受け入れInputStreamます。私はその一般的なユーティリティのためにURLを最も頻繁に使用します。URLは、Webリソース、ローカルファイルシステム上のファイル、またはJarファイルの奥深くに埋め込まれたリソース(Web上またはローカルファイルシステム上)を表すことができます。

于 2012-06-24T08:17:25.203 に答える
2

Q:これを修正するにはどうすればよいですか?

A:ええと-アプレットからクライアントPC上のファイルを読み取ろうとしないのですか?

または、「ポリシーファイル」についてお読みください。

Javaアプレットは、安全な「サンドボックス」で実行されます。これは仕様によるものです-エンドユーザーの安全のために:

于 2012-06-24T04:36:50.323 に答える