2

遇到错误时试图遵循http://java.sun.com/docs/books/tutorial/uiswing/components/icon.html 。"C:\projects\html\test.html"似乎 getResource在 IE6 中本地访问页面时(即,当 URL 为 时)返回 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 更新 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

听起来不同之处在于您在 1.6u10中使用了“下一代”插件技术。You can disable it and use the older plugin technology by changing the appropriate option under the Advanced tab in the Java Control Panel. 这至少可以将您的问题隔离到特定版本。

于 2009-04-06T17:31:31.863 回答
1

您是否在 Java 控制台中检查了消息?

据我所知,Internet Explorer 6 的安全规则比旧的 IE5 或 Netscape/Mozilla 更严格。虽然 Netscape 允许从本地驱动器打开的小程序访问该驱动器上的资源,但 IE 不允许。在这种情况下,您可能会在控制台中看到一些安全异常。

解决方法是设置一个本地网络服务器,例如Tomcat,并通过它访问包含小程序的 html 文件,例如http://127.0.0.1:8080/some/applet.html然后小程序不再来自您的硬盘,并且能够访问服务器http://127.0.0.1:8080/提供的任何资源。

于 2009-06-08T10:24:12.250 回答
0

The security settings running locally is very restrictive, see security report (similar question asked here).

As suggested in another answer, run it in a web-server (eg tomcat) and most of your problems should be gone.

于 2009-06-22T22:09:24.090 回答
-1

只是一个猜测:也许小程序安全限制在这里适用?一般来说,除非小程序没有签名,否则是不允许访问本地资源的。如果从本地存储的页面打开小程序,我不确定这是如何工作的,但这很可能是根本原因。

签署小程序并在浏览器中接受证书可能会解决问题。

于 2009-03-30T08:39:00.430 回答