1

我刚刚将我的 Java 插件升级到 1.7.0_25,这导致我几年前编写的一个小程序出现致命错误(此后一直在维护)。

在我调用的小程序的 init() 方法的早期

logger = Logger.getAnonymousLogger();

此调用自 Java 1.4.2 以来一直在运行,没有出现任何问题。现在,使用 Java 1.7.0_25(至少在 Windows 7 上;我没有 Mac 或 Linux 机器可以在这里测试),第一次加载小程序时,它工作得很好。但是,如果关闭小程序的浏览器页面并再次加载页面,小程序将失败并显示以下控制台消息:

basic: Applet loaded.
basic: Applet resized and added to parent container
basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 756747 us, pluginInit dt 76093467 us, TotalTime: 76850214 us java.lang.NullPointerException
    at java.util.logging.Logger.doSetParent(Unknown Source)
    at java.util.logging.Logger.getAnonymousLogger(Unknown Source)
    at java.util.logging.Logger.getAnonymousLogger(Unknown Source)
    at com.optix.applet.viewer.ObjectViewer.init(ObjectViewer.java:214)
    at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.init(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Ignored exception: java.lang.NullPointerException

要再次加载小程序,我必须关闭并重新启动浏览器。

自 Java 1.4 中引入 java.util.logger 以来,任何以前的 Java 版本都从未发生过这种情况。

应该没有权限问题:我已将新属性添加到 META-INF/MANFEST.MF

Permissions: all-permissions
Codebase: *

正如http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/no_redeploy.html中所要求的那样。该小程序使用当前的 GoDaddy 证书进行签名并加盖时间戳。

我发现如果我创建记录器

logger = Logger.getLogger(String);

小程序每次都会加载。

我找不到关于这个错误的任何信息。有人看过吗?有谁知道是什么原因导致它出现在 Java 1.7.0_25 中,或者为什么调用会在浏览器会话中工作一次但不会第二次?

4

1 回答 1

1

我在 Linux 上遇到了完全相同的问题。

这是来自 Oracle的相关错误报告。

于 2013-07-03T06:03:10.813 回答