2

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

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

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 

答えて

-1

ただの推測:おそらく、アプレットのセキュリティ制限がここで適用されています?一般に、アプレットが署名されていない限り、ローカルリソースにアクセスすることはできません。アプレットがローカルに保存されたページから開かれている場合、どのように動作するのか分かりませんが、それは根本的な原因かもしれません。

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

+0

からアプレットを実行しないでください。アプレットに署名し、私は証明書を受け入れました。 –

+1

署名しないでください - 元のポスターには、コードが安全かどうかを確認することができないと思います。 –

1

あなたは1.6u10で"next-generation" plugin technologyを使用しているという違いがあります。これを無効にして、古いプラグイン技術を使用するには、Javaコントロールパネルの[詳細設定]タブで適切なオプションを変更します。少なくとも、問題を特定のバージョンに分離することができます。

1

Javaコンソールでメッセージをチェックしましたか?

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

回避するには、ローカルウェブサーバーを設定します(例:Tomcat)、アプレットを含むhtmlファイルにアクセスします(例:Tomcat)。 http://127.0.0.1:8080/some/applet.html。アプレットはあなたのharddistからのものではなく、サーバhttp://127.0.0.1:8080/によって提供されるリソースにアクセスすることができます。

0

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

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

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); 

私は実際にこれをテストしていませんが、私は一般的に、ファイルシステム:)そうにない

関連する問題