我正在开发一个将不再在 JRE 版本 7u21 下启动的签名小程序。
我已经使用 7u21 JDK 重新编译了小程序,我已经将该Trusted-Library:true
行添加到清单中(并在它导致 SecurityException 后再次删除它),我已经重新安装了 JRE。以下是我可以从 Java 控制台中获得的信息:
basic: exception: com.sun.deploy.net.DownloadEngine$2 cannot be cast to com.sun.deploy.cache.CacheEntry.
ExitException[ 3]java.lang.ClassCastException: com.sun.deploy.net.DownloadEngine$2 cannot be cast to com.sun.deploy.cache.CacheEntry
at sun.plugin2.applet.JNLP2Manager.loadJarFiles(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
该小程序正在使用 Oracle 的 deployJava 脚本进行部署。
这发生在我们所有的 Chrome、FireFox、IE 8 和 9 测试系统上,这表明存在插件问题。它目前正在影响在此 JRE 更新之前运行良好一年多的生产系统。
任何人的任何见解都将不胜感激。
本地构建的 JNLP 文件内容为:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" version="2.0.30" codebase="http://localhost:8080/" href="avs/res/util-applet.jnlp">
<information>
<title>Utility Applet - LOCAL</title>
<vendor>Vendor</vendor>
</information>
<resources>
<j2se version="1.7+" href="http://java.sun.com/products/autodl/j2se" java-vm-args="-Xms256m -Xmx1024m"/>
<jar href="/avs/res/util-jar-with-dependencies.jar" main="true" />
</resources>
<security>
<all-permissions/>
</security>
<applet-desc name="guiApplet" main-class="au.edu.ncver.avs.web.util.UtilApplet" width="1" height="1"/>
<update check="background"/>
</jnlp>
更新 1
我可以很好地确认这是来自插件的缓存。如果我进入 Java 控制面板并禁用本地存储,那么问题就会消失。重新启用本地存储会带来问题。
更新 2
更新了 JNLP 以反映对上述 SecurityException 的修复;但 ClassCastException 仍然存在。几周前,我在 Oracle 上记录了一个错误,但没有收到他们的任何消息,而且该错误实际上也没有出现在他们的数据库中。
更新 3
问题在 7u25 中仍然存在。