自Java 7 Update 25以来,Applet 的方法getCodeBase()
似乎返回NULL
了本地小程序。我在Java 7u25发行说明中没有找到任何可以宣布/解释此更改的内容,但我发现了一个电子邮件讨论,声称该更改实际上是有意的。
谁能帮我找到一个资源/文档,我可以在其中了解有关此更改的更多信息?
更新(2014 年 1 月 21 日):Java 7 更新 51 似乎已修复此 Java 错误
Oracle 声称该修复程序与“安全”相关,并且需要防止沙盒小程序获得对“文件路径”信息(正在运行小程序的文件夹名称)的访问权限。但是甲骨文失败了,正如这里详细解释的那样:
http://www.duckware.com/tech/java-security-clusterfuck.html
谷歌“java 错误报告”并向 Oracle 提交错误报告。
发行说明在这里:
http://www.oracle.com/technetwork/java/javase/7u25-relnotes-1955741.html
它在那里。
“本地小程序为”返回 NULL
Oracle 错误 #8017250(显然也与无法使用 JDK 7u21 和 7u25 调试小程序有关)有更多细节。特别是,它指出这“不是问题”(即故意的)并建议以下替代方案:
如果小程序需要加载资源:
- 如果资源在 applet JAR(s) 中,他们应该能够
ClassLoader.getResoruceAsStream
直接加载它,而不需要代码库信息。- 如果资源在任意位置,而不是在 applet JAR 中,他们应该有其他方法可以到达该位置,因为它不是 applet 资源的一部分。(例如
user.home
java 系统属性,前提是他们的小程序拥有所有权限)