• ベストアンサー

Appletでjar内の画像ファイルを読み込む方法

Applet初心者なのですが、ブラウザにおいてApplet内に画像ファイルを読み込んで、表示しようと思っています。しかし、これはセキョリティに引っかかることはわかっております。しかし、jar内に画像ファイルを入れてしまい、これに対して読み込みを掛けることはセキョリティに違反しないのではないかと思うのですが、そのような方法で画像ファイルを読み込むことってできるのでしょうか? どうぞご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.2

 こんばんは、#1です。  いったんJarファイルのことは忘れましょう。  アプレットをJarファイル化していない場合を考えてみます。 アプレットのクラス : TestApplet.class 画像ファイル : yyy.jpg  が、Webサーバーの同じディレクトリにあるとします。  ブラウザがHTMLを読み込み、アプレットタグで指定してあるTestApplet.classを実行します。  その時、TestApplet.classから、まだ、サーバーにあるyyy.jpgを読み込むには、  ↓こうですね。 pubic void init() {   Image image = this.getImage(this.getCodeBase(), "yyy.jpg");   ・・・ }  実はアプレットをJar化したときも、まったく同じ扱いなのです。 「yyy.jpgはJarファイルの中に入っているのだから、もうクライアントに来ているじゃないか」  と、思うかもしれませんが、たぶん、アプレットをJar化しようが、すまいが、同じコードで動かなくてはいけないので、そうなっているのでしょう。

ikeday
質問者

お礼

できました!!本当にありがとうございました。 ちょっと行き詰まっていたので、本当に助かりました。

その他の回答 (1)

  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.1

 こんばんは。 >ブラウザにおいてApplet内に画像ファイルを読み込んで、 >表示しようと思っています。しかし、これはセキョリティに >引っかかることはわかっております。  クライアントのローカルハードディスクにある画像を読み込もうとすれば、そうですが、アプレットを置いているサーバーの画像を読むことなら、セキュリティーに違反しません。 >jar内に画像ファイルを入れてしまい、これに対して読み込みを >掛けることはセキョリティに違反しないのではないかと思うのです  できますよ。  もちろんセキュリティーにも違反しません。  普通にコードベースのディレクトリにあるものとしてAppletのgetImageメソッドから得ることができます。

ikeday
質問者

補足

PecoPlusさん、早速のご回答ありがとうございます。 さて、jarを作成し、その中にyyy.jpgを含めまして、サーバー(自宅サーバーです)におきました。画像を読み込むアプレットは; public void init(){ Image osImg = Toolkit.getDefaultToolkit().getImage( new String("./yyy.jpg"));.... といたしまして、更に、htmlファイルは; <BODY> <APPLET code="yyyApplet" archive="yyyy.jar" codebase="http://www.xxxx.jp/java/" width=640 height=480> Your browser does not support Java, so nothing is displayed. </APPLET> という部分を入れています。これをブラウザで実行したところ、サーバーは; java.security.AccessControlException: access denied (java.io.FilePermission yyy.jpg read) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:269) at java.security.AccessController.checkPermission(AccessController.java:401) at java.lang.SecurityManager.checkPermission(SecurityManager.java:524) at java.lang.SecurityManager.checkRead(SecurityManager.java:863)...... といったエラーをはいて、ブラウザに×マーク、Status Barには"yyyApplet notinited"というエラー表示が出ます。PecoPlusさんのご指摘で、読み込むことはできるようですが、どうもうまく行きません。どうぞ、間違っている点をご指摘ください。よろしくお願いいたします。 OS: MacOSX 10.3.9 Browser: Safari Server: Macmini(10.3.9)

関連するQ&A

専門家に質問してみよう