2

我正在开发一个将不再在 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 中仍然存在。

4

0 回答 0