我们开始注意到使用 Java 7(尤其是更新 4),我们所有的用户都开始使用我们的 Webstart 应用程序看到这一点:
[14:42:58,422] AWT-EventQueue-0(DEBUG) java.lang.SecurityException: class "CLASSNAME" does not match trust level of other classes in the same package
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.deploy.security.CPCallbackHandler$ChildElement.checkResource(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.deploy.security.DeployURLClassPath$JarLoader.checkResource(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.deploy.security.DeployURLClassPath$JarLoader.getResource(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.net.URLClassLoader$1.run(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.net.URLClassLoader$1.run(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.security.AccessController.doPrivileged(Native Method)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.net.URLClassLoader.findClass(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.lang.ClassLoader.loadClass(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.lang.ClassLoader.loadClass(Unknown Source)...More
其中 CLASSNAME = 应用程序执行中几个 jar 中随机点的几乎每个类,破坏了几种行为。如果我们的用户使用 Java 6,他们没有问题!只有 7 个(更新 4)。我们对所有的 jar 进行签名,包括主应用程序 jar 和库 jar。ie 启动我们的 webstart 应用程序的用户看到蓝色盾牌而不是黄色或红色。
这显然是一个问题,因为用户现在更频繁地升级到 Java 7。我试图通过使用以前的安装(工作)或安装新的来强制我们的应用程序在用户机器上使用 Java 6....在资源周围使用 j2se version="1.6" 标记,但这会导致它自己的问题,最好将其放入它自己的线程(auto-jre-installation 部分)。
Oracle 是否使用 Java 7u4 破坏了 Webstart 安全性?如何解决此安全异常问题?