我正在开发一个已签名的Applet,它将不再在JRE版本7u21下启动。
我使用7u21 JDK重新编译了applet,我已将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脚本部署applet。
我们在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。