2

エラーが発生したときにhttp://java.sun.com/docs/books/tutorial/uiswing/components/icon.htmlをフォローしようとしていました。"C:\projects\html\test.html"IE6でローカルにページにアクセスすると (つまり、URL が の場合)、getResource が null を返すようです。クラスとリソースは同じ Jar ファイルにあります。

理由と回避策 (存在する場合) を知っている人はいますか?

Win XP/IE 6/JRE 1.6.0_11 では発生しますが、Win XP/IE 7/1.6.0-b105 では発生しません。

動作している環境では、クラスローダーは次のとおりです。

sun.plugin.security.PluginClassLoader  

壊れている環境では、次のようになります。

sun.plugin2.applet.Applet2ClassLoader
4

5 に答える 5

2

Nickが述べたように、Java 6 update 11は、ファイルシステムで実行されているアプレットのセキュリティ設定を変更しました。getResource()を使用すると、URLからロードしているため、実際には適用されないはずの新しい制限に誤ってぶつかった可能性があります。

代わりに、次のようにgetResourceAsStream()を試してください。

InputStream in = getClass().getResourceAsStream("image.jpg");
Image image = ImageIO.read(in);
ImageIcon icon = new ImageIcon(image);

私は実際にこれをテストしていませんが、通常、ファイルシステムからアプレットを実行しません:)

于 2009-06-24T07:19:54.500 に答える
1

Java コンソールでメッセージを確認しましたか?

私が覚えている限りでは、Internet Explorer 6 には古い IE5 や Netscape/Mozilla よりも厳格なセキュリティ ルールがあります。Netscape では、ローカル ドライブから開かれたアプレットはそのドライブ上のリソースにアクセスできますが、IE ではできません。この場合、コンソールにセキュリティ例外が表示されることがあります。

回避するには、 Tomcatなどのローカル Web サーバーをセットアップし、それを介してアプレットを含む html ファイル ( http://127.0.0.1:8080/some/applet.htmlなど) にアクセスします。その後、アプレットはハード ディスクからではなくなり、サーバーhttp://127.0.0.1:8080/が提供する任意のリソースにアクセスできるようになります。

于 2009-06-08T10:24:12.250 に答える
0

ローカルで実行されるセキュリティ設定は非常に制限的です。セキュリティ レポートを参照してください(同様の質問がここで尋ねられます)。

別の回答で示唆されているように、Webサーバー(tomcatなど)で実行すると、ほとんどの問題が解決するはずです。

于 2009-06-22T22:09:24.090 に答える
-1

推測ですが、アプレットのセキュリティ制限が適用されているのではないでしょうか? 一般に、アプレットが署名されていない限り、ローカル リソースへのアクセスは許可されません。アプレットがローカルに保存されたページから開かれた場合にこれがどのように機能するかはわかりませんが、それが根本的な原因である可能性があります。

アプレットに署名し、ブラウザで証明書を受け入れると、問題が解決する場合があります。

于 2009-03-30T08:39:00.430 に答える