- PR -

HTMLでapplet実行時に例外発生。

1
投稿者投稿内容
unpocoloco
会議室デビュー日: 2005/03/29
投稿数: 11
投稿日時: 2005-04-04 16:44
 デスクトップ上でappletとhtmlを作成し、appletviewer及びブラウザで問題なく表示作動するが、新たにフォルダを作成し該当するファイルを移動しそのフォルダから実行するとappletviewerでは問題ないが、ブラウザでの表示ではjavaコンソールに次のような表示が出る。
java.security.AccessControlException: access denied (java.io.FilePermission image/off1b.gif 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 sun.awt.SunToolkit.getImageFromHash(Unknown Source)
at sun.awt.SunToolkit.getImage(Unknown Source)
at javax.swing.ImageIcon.<init>(Unknown Source)
at javax.swing.ImageIcon.<init>(Unknown Source)
at CalApplet.init(CalApplet.java:74)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

 これにより、image/off1b.gifを読み取り専用にしたり、ファイルを変更したりするが解決せず。どなたかご意見聞かせてくれませんか。
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2005-04-04 17:50
アクセス権がないのにローカルファイルを読み込もうとしているからではないでしょうか?
ポリシーファイルを設定するなどしてアクセス権を与えてください。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2005-04-04 19:01
その様なケースでは、通常イメージファイルをHttpサーバー側に置く(または
JARファイルに同梱するとか)のが一般的な解決策ではないかと思います。
#折角Appletを使っているのに、画像ファイルをあらかじめクライアントに
#配布しておくようなことは、普通しませんよね?
サンドボックスによるアクセス制限下でも、Httpサーバー側へのアクセスは
可能です。
unpocoloco
会議室デビュー日: 2005/03/29
投稿数: 11
投稿日時: 2005-04-04 21:43
 シュンさん、でゅうくさん早速のご意見ありがとうございます。
ところで表記の件ですが、その後今一度見直しappletで使用する画像の指定を
「***.setIcon(new ImageIcon("***/***.gif"))」から
「***.setIcon(new ImageIcon(getImage(getDocumentBase(), "***/***.gif")))」
へ変更する事で解決しました。
どうもお騒がせしました。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2005-04-05 14:47
一応ですが、以下の2行は全く違う動作をするということを理解してはいますよね?
開発機では、クライアントマシンとHttpサーバーが「たまたま同一」であるために、
似たような動作になるというだけで、本番環境では全く違う動作になりますよ。

>「***.setIcon(new ImageIcon("***/***.gif"))」
ファイルパス指定("JVM起動時のカレントディレクトリ/***/***.gif")により、JVMが起動しているマシンのローカルディスクからロードしようとしています。

>「***.setIcon(new ImageIcon(getImage(getDocumentBase(), "***/***.gif")))」
URL指定("documentBase/***/***.gif")で、Httpサーバーからダウンロードしようとしています。
unpocoloco
会議室デビュー日: 2005/03/29
投稿数: 11
投稿日時: 2005-04-05 22:16
 ありがとうございます。
 まったく理解していませんでした、今回そのような訂正をしたのは、以前に何かのサンプルコードでそのようにしていたのを思い出し、試しにやってみたら何とかなったという程度でした。気にはなっていたので後から突き詰めるつもりでしたが助かります。
1

スキルアップ/キャリアアップ(JOB@IT)