更新到JRE 7u21后运行Applet的ClassCastException

时间:2013-04-23 06:01:04

标签: java applet classcastexception

我正在开发一个已签名的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。

0 个答案:

没有答案