我刚刚将我的Java plugin升级到了1.7.0_25,这导致了我几年前编写的一个applet出现致命错误(从那以后我一直在维护它)。
在applet的init()方法的早期,我调用了
logger = Logger.getAnonymousLogger();此调用从Java 1.4.2开始运行,没有出现任何问题。现在,使用Java (至少在Windows7上;我在这里没有可以测试的Mac或Linux机器),第一次加载1.7.0_25时,它工作得很好。但是,如果关闭小程序的浏览器页面并重新加载该页面,则小程序将失败,并显示以下控制台消息:
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.util.logger在Java1.4中引入以来,以前的任何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中,或者为什么调用会在浏览器会话中工作一次,而不是第二次呢?
发布于 2013-07-03 14:03:11
我在Linux上也遇到了同样的问题。
这是来自Oracle的相关bug report。
https://stackoverflow.com/questions/17241970
复制相似问题