[英]Java web start doesn't work after java version 7u45 (NPE)
我们的Java应用程序是通过Java Web Start(带有glassfish 4.0)启动的。 更新到Java 7u45后,它不再起作用。 这是错误消息:
java.lang.NullPointerException
at java.io.StringReader.<init>(Unknown Source)
at org.glassfish.appclient.client.JWSAppClientContainerMain.insertMaskingLoader(JWSAppClientContainerMain.java:186)
at org.glassfish.appclient.client.JWSAppClientContainerMain.main(JWSAppClientContainerMain.java:132)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
下载完成后立即发生这种情况。 快速浏览GF源文件后,似乎未定义属性loader.config
因为第二行引发了NPE:
final String loaderConfig = System.getProperty("loader.config");
StringReader sr = new StringReader(loaderConfig);
EDIT上述其中NPE发生两个代码行是Glassfish的代码,从类JWSAppClientContainerMain
在罐子gf-client-module.jar
。 它一直工作到Java更新45。
从Update 45开始,JavaWebstart将不再将不安全的属性传递给您的应用程序。 没有以jnlp
或javaws
为前缀的所有属性均被视为不安全。
您或者需要将loader.config
更改为jnlp.loader.config
(在JNLP和Java代码中),或者需要对JNLP进行签名(将JNLP的确切副本放置在JNLP-INF/APPLICATION.JNLP
在罐子里并在罐子上签名)。
根据此OpenJDK Bugreport,这是有意更改,以解决安全漏洞
您的系统属性中没有键为“ loader.config”的属性。这就是为什么它向loaderConfig
返回空值的原因。 当您将null
值传递给StringReader
构造函数时,由于将在输入的Constructor参数( null值)上调用length方法,因此它将抛出NPE。 请看下面
public StringReader(String s) {
this.str = s;
this.length = s.length();
}
希望这可以帮助
我们对此问题进行了很多搜索,幸运的是,我们找到了一个非常适合我们的解决方案。
在我们的jnlp文件中,我们有:
<resources>
<j2se version="1.5+"/>
...
</resources>
我们已在此模式下进行了更改:
<resources>
<j2se version="1.6+" java-vm-args="-Djava.net.preferIPv4Stack=true"/>
...
</resources>
我们在这里找到了这个解决方案:
https://community.oracle.com/thread/2520987
希望这对您有帮助。
在glassfish 4.1中解决了此问题,然后将Java降级到u21或更早的版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.