Java WebStart NPE occasionnel depuis 1.8 031
Nous avons une application Java signée qui est distribuée aux clients avec Java WebStart, mais depuis 1.8_031, nous voyons parfois un NPE. Avec Java 1.8_031 ou une version antérieure, l'application a toujours fonctionné. La même machine peut parfois exécuter l'application, parfois pas. Effacement du cache n'a pas d'incidence sur cette question.
Le fichier JNLP se présente comme suit:
<?xml version="1.0" encoding="utf-8"?>
<!--
Java Webstart JNLP File for ESKORT Clearance Workbench Application
$Id: cwb.jnlp.template,v 1.26.2.9.2.1 2015/05/19 12:43:03 PB Exp $
-->
<jnlp codebase="http://T500-DASIM:6610/clearance" href="cwb.jnlp" spec="6.0+">
<information>
<title>ESKORT Clearance Workbench 4.0.0.33</title>
<vendor>Copyright © 2014 Intrasoft International Scandinavia A/S. All rights reserved.</vendor>
<homepage href="http://www.intrasoft-intl.com/eskort"/>
<description>ESKORT Clearance Workbench 4.0.0.33</description>
<description kind="short">Client application for modifying the ESKORT Clearance Risk Analysis Configuration.</description>
<icon href="conf/ClearanceWorkbench64.jpg"/>
<icon href="conf/ClearanceWorkbenchSplash.jpg" kind="splash"/>
<related-content href="http://www.intrasoft-intl.com/eskort"/>
<!--offline-allowed/-->
</information>
<update check="always"/>
<resources>
<j2se version="1.5+"/>
<jar download="eager" href="lib/clearance-workbench-4.0.jar" main="true"/>
<jar download="eager" href="lib/profiletestbed-client-4.0.jar" />
<jar download="eager" href="lib/profiletestbed-core-4.0.jar" />
<jar download="eager" href="lib/spring-richclient-core-1.1.0.jar" />
<jar download="eager" href="lib/spring-richclient-resources-1.1.0.jar" />
<jar download="eager" href="lib/spring-richclient-sandbox-1.1.0.jar" />
<jar download="eager" href="lib/spring-binding-1.0.5.jar" />
<jar download="eager" href="lib/looks-2.2.2.jar" />
<jar download="eager" href="lib/swingx-1.6.1.jar" />
<jar download="eager" href="lib/glazedlists_java15-1.8.0.jar" />
<jar download="eager" href="lib/forms-1.2.1.jar" />
<jar download="eager" href="lib/ebcj-4.0.jar" />
<jar download="eager" href="lib/all-i18n.jar" />
<jar download="eager" href="lib/jlfgr-1_0.jar" />
<jar download="eager" href="lib/swing-layout-1.0.jar" />
<jar download="eager" href="lib/jxlayer-3.0.4.jar" />
<jar download="eager" href="lib/spring.jar" />
<jar download="eager" href="lib/spring-webmvc.jar" />
<jar download="eager" href="lib/spring-security-core-2.0.4.jar" />
<jar download="eager" href="lib/commons-logging.jar" />
<jar download="eager" href="lib/commons-collections.jar" />
<jar download="eager" href="lib/commons-codec.jar" />
<!-- Setup configuration class -->
<property name="jnlp.com.wmdata.cscc.clearance.workbench.configuration_class" value="com.wmdata.cscc.clearance.workbench.core.ClearanceWorkbenchConfiguration_Standard"/>
<!-- Setup look and feel -->
<!-- Setup language etc... -->
<property name="jnlp.com.wmdata.cscc.i18n.language" value="en"/>
<property name="jnlp.com.wmdata.cscc.i18n.country" value="XX"/>
<property name="jnlp.com.wmdata.cscc.i18n.variant" value="imp_exp_man"/>
<!--
Disable the default 3-attempts login dialog.
Only enable this proerty if you supply your own LoginModule-Logic which
do NOT use the Intracom LoginDialog!
-->
<!--property name="cwb_standard.disable_login_dialog" value="yes please"/-->
<!-- Clear basic authentication header after login -->
<!--property name="cwb.service_manager.http_invoker.clearAuthenticationHeaderAfterLogin" value="true"/-->
<!--
Disable WebStart http login dialogue
The javaws.cfg.jauthenticator property must be set to "true" or "all" to
disable the built-in javaws HTTP authentication dialogue.
-->
<property name="javaws.cfg.jauthenticator" value="true"/>
</resources>
<application-desc main-class="com.wmdata.cscc.clearance.workbench.launcher.MainWebStart"/>
<security>
<all-permissions/>
</security>
</jnlp>
À partir du fichier de trace, la différence entre le chargement correct de l'application et son absence semble être liée à ces lignes:
basic: JREMatcher:
JREDesc: JREDesc[version 1.5+, versionType=0, secure=false, heap=-1--1, args=null, href=http://java.sun.com/products/autodl/j2se, null, null]
JREInfo: JREInfo for index 0:
platform is: 1.8
product is: 1.8.0_65
location is: http://java.sun.com/products/autodl/j2se
path is: C:\Program Files (x86)\Java\jre1.8.0_65\bin\javaw.exe
args is:
native platform is: Windows, x86 [ x86, 32bit ]
JavaFX runtime is: JavaFX 8.0.65 found at C:\Program Files (x86)\Java\jre1.8.0_65\
enabled is: true
registered is: true
system is: true
Init Heap: -1
Max Heap: 67108864
Satisfying: false, false
SatisfyingVersion: true
SatisfyingJVMArgs: false, false
SatisfyingSecure: false
Selected JVMParam: [JVMParameters: isSecure: true, args: "-Djnlp.com.wmdata.cscc.clearance.workbench.configuration_class=com.wmdata.cscc.clearance.workbench.core.ClearanceWorkbenchConfiguration_Standard" "-Djnlp.com.wmdata.cscc.i18n.language=en" "-Djnlp.com.wmdata.cscc.i18n.country=XX" "-Djnlp.com.wmdata.cscc.i18n.variant=imp_exp_man" "-Djavaws.cfg.jauthenticator=true"]
Running JVMParam: [JVMParameters: isSecure: true, args: "-Djnlp.com.wmdata.cscc.clearance.workbench.configuration_class=com.wmdata.cscc.clearance.workbench.core.Clearanc" "-Djnlp.com.wmdata.cscc.i18n.variant=imp_exp_man" "-Djavaws.cfg.jauthenticator=true" "&ref" ">ain" "#alse" "2ager" ";ref"]
..
cache: registerReference: com.sun.deploy.cache.MemoryCache$CachedResourceReference@99a51c64: 3
security: Rejecting argument with illegal chars: t‡€
security: Rejecting argument with illegal chars: w‡€
security: Rejecting argument with illegal chars: )@¨0Õ
security: Rejecting argument with illegal chars: r‡€
security: Rejecting argument with illegal chars: m‡€
security: Rejecting argument with illegal chars: h‡€
security: Rejecting argument with illegal chars: !?`Õ
security: Rejecting argument with illegal chars: k‡€
security: Rejecting argument with illegal chars: f‡€
security: Rejecting argument with illegal chars: ,¨ÀÕ
security: Rejecting argument with illegal chars: a‡€
security: Rejecting argument with illegal chars: ‡€
security: Rejecting argument with illegal chars: 0)x¨ØÕ
..
network: Created version ID: 1.7
basic: Launching new JRE version: JREInfo for index 0:
platform is: 1.8
product is: 1.8.0_65
location is: http://java.sun.com/products/autodl/j2se
path is: C:\Program Files (x86)\Java\jre1.8.0_65\bin\javaw.exe
args is:
native platform is: Windows, x86 [ x86, 32bit ]
JavaFX runtime is: JavaFX 8.0.65 found at C:\Program Files (x86)\Java\jre1.8.0_65\
enabled is: true
registered is: true
system is: true
basic: jvmParams: [JVMParameters: isSecure: true, args: "-Djnlp.com.wmdata.cscc.clearance.workbench.configuration_class=com.wmdata.cscc.clearance.workbench.core.ClearanceWorkbenchConfiguration_Standard" "-Djnlp.com.wmdata.cscc.i18n.language=en" "-Djnlp.com.wmdata.cscc.i18n.country=XX" "-Djnlp.com.wmdata.cscc.i18n.variant=imp_exp_man" "-Djavaws.cfg.jauthenticator=true"]
basic: cmd 0 : C:\Program Files (x86)\Java\jre1.8.0_65\bin\jp2launcher.exe
basic: cmd 1 : -Djnlp.com.wmdata.cscc.clearance.workbench.configuration_class=com.wmdata.cscc.clearance.workbench.core.Clearanc
basic: cmd 2 : -Djnlp.com.wmdata.cscc.i18n.variant=imp_exp_man
basic: cmd 3 : -Djavaws.cfg.jauthenticator=true
basic: cmd 4 : &ref
basic: cmd 5 : >ain
basic: cmd 6 : #alse
basic: cmd 7 : 2ager
basic: cmd 8 : ;ref
basic: cmd 9 : -Djnlp.com.wmdata.cscc.clearance.workbench.configuration_class=com.wmdata.cscc.clearance.workbench.core.ClearanceWorkbenchConfiguration_Standard
basic: cmd 10 : -Djnlp.com.wmdata.cscc.i18n.language=en
basic: cmd 11 : -Djnlp.com.wmdata.cscc.i18n.country=XX
basic: cmd 12 : -Xbootclasspath/a:C:\Program Files (x86)\Java\jre1.8.0_65\lib\javaws.jar;C:\Program Files (x86)\Java\jre1.8.0_65\lib\deploy.jar;C:\Program Files (x86)\Java\jre1.8.0_65\lib\plugin.jar
basic: cmd 13 : -classpath
basic: cmd 14 : C:\Program Files (x86)\Java\jre1.8.0_65\lib\deploy.jar
basic: cmd 15 : -Djnlpx.vmargs=LURqbmxwLmNvbS53bWRhdGEuY3NjYy5jbGVhcmFuY2Uud29ya2JlbmNoLmNvbmZpZ3VyYXRpb25fY2xhc3M9Y29tLndtZGF0YS5jc2NjLmNsZWFyYW5jZS53b3JrYmVuY2guY29yZS5DbGVhcmFuYwAtRGpubHAuY29tLndtZGF0YS5jc2NjLmkxOG4udmFyaWFudD1pbXBfZXhwX21hbgAtRGphdmF3cy5jZmcuamF1dGhlbnRpY2F0b3I9dHJ1ZQAmcmVmAD5haW4AI2Fsc2UAMmFnZXIAO3JlZgAtRGpubHAuY29tLndtZGF0YS5jc2NjLmNsZWFyYW5jZS53b3JrYmVuY2guY29uZmlndXJhdGlvbl9jbGFzcz1jb20ud21kYXRhLmNzY2MuY2xlYXJhbmNlLndvcmtiZW5jaC5jb3JlLkNsZWFyYW5jZVdvcmtiZW5jaENvbmZpZ3VyYXRpb25fU3RhbmRhcmQALURqbmxwLmNvbS53bWRhdGEuY3NjYy5pMThuLmxhbmd1YWdlPWVuAC1Eam5scC5jb20ud21kYXRhLmNzY2MuaTE4bi5jb3VudHJ5PVhYAA==
basic: cmd 16 : -Djnlpx.jvm=C:\Program Files (x86)\Java\jre1.8.0_65\bin\javaw.exe
basic: cmd 17 : -Djnlpx.splashport=49748
basic: cmd 18 : -Djnlpx.home=C:\Program Files (x86)\Java\jre1.8.0_65\bin
basic: cmd 19 : -Djnlpx.remove=false
basic: cmd 20 : -Djnlpx.offline=false
basic: cmd 21 : -Djnlpx.relaunch=true
basic: cmd 22 : -Djnlpx.session.data=C:\Users\dasim\AppData\Local\Temp\session5200992794202174532
basic: cmd 23 : -Djnlpx.heapsize=NULL,NULL
basic: cmd 24 : -Djava.security.policy=file:C:\Program Files (x86)\Java\jre1.8.0_65\lib\security\javaws.policy
basic: cmd 25 : -DtrustProxy=true
basic: cmd 26 : -Xverify:remote
basic: cmd 27 : -Djnlpx.origFilenameArg=C:\Users\dasim\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\9IOP4P8I\cwb.jnlp
basic: cmd 28 : -Dsun.awt.warmup=true
basic: cmd 29 : -Djava.security.manager
basic: cmd 30 : com.sun.javaws.Main
basic: cmd 31 : -secure
basic: cmd 32 : C:\Users\dasim\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\53\25f096b5-751b9e5c
preloader: Stop progressCheck thread queue.size()=0
network: Created version ID: 1.7
security: Main class is: &ref
Cannot use secure launcher with main class: &ref
Sur la console l'erreur ressemble à ceci:
java.lang.NullPointerException
at com.sun.javaws.JnlpxArgs.execProgram(Unknown Source)
at com.sun.javaws.Launcher.relaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareResources(Unknown Source)
at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main.access$000(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
(Les arguments sont en effet brouillés, mais comment cela se produit n'est pas clair.)
Voici un extrait au niveau correspondant du fichier de trace lorsque l'application se lance correctement:
basic: jvmParams: [JVMParameters: isSecure: true, args: "-Djnlp.com.wmdata.cscc.clearance.workbench.configuration_class=com.wmdata.cscc.clearance.workbench.core.ClearanceWorkbenchConfiguration_Standard" "-Djnlp.com.wmdata.cscc.i18n.language=en" "-Djnlp.com.wmdata.cscc.i18n.country=XX" "-Djnlp.com.wmdata.cscc.i18n.variant=imp_exp_man" "-Djavaws.cfg.jauthenticator=true"]
basic: cmd 0 : C:\Program Files (x86)\Java\jre1.8.0_65\bin\jp2launcher.exe
basic: cmd 1 : -Djnlp.com.wmdata.cscc.clearance.workbench.configuration_class=com.wmdata.cscc.clearance.workbench.core.Clearanc
basic: cmd 2 : -Djnlp.com.wmdata.cscc.i18n.variant=imp_exp_man
basic: cmd 3 : -Djavaws.cfg.jauthenticator=true
basic: cmd 4 : -Djnlp.com.wmdata.cscc.clearance.workbench.configuration_class=com.wmdata.cscc.clearance.workbench.core.ClearanceWorkbenchConfiguration_Standard
basic: cmd 5 : -Djnlp.com.wmdata.cscc.i18n.language=en
basic: cmd 6 : -Djnlp.com.wmdata.cscc.i18n.country=XX
basic: cmd 7 : -Xbootclasspath/a:C:\Program Files (x86)\Java\jre1.8.0_65\lib\javaws.jar;C:\Program Files (x86)\Java\jre1.8.0_65\lib\deploy.jar;C:\Program Files (x86)\Java\jre1.8.0_65\lib\plugin.jar
basic: cmd 8 : -classpath
basic: cmd 9 : C:\Program Files (x86)\Java\jre1.8.0_65\lib\deploy.jar
basic: cmd 10 : -Djnlpx.vmargs=LURqbmxwLmNvbS53bWRhdGEuY3NjYy5jbGVhcmFuY2Uud29ya2JlbmNoLmNvbmZpZ3VyYXRpb25fY2xhc3M9Y29tLndtZGF0YS5jc2NjLmNsZWFyYW5jZS53b3JrYmVuY2guY29yZS5DbGVhcmFuYwAtRGpubHAuY29tLndtZGF0YS5jc2NjLmkxOG4udmFyaWFudD1pbXBfZXhwX21hbgAtRGphdmF3cy5jZmcuamF1dGhlbnRpY2F0b3I9dHJ1ZQAtRGpubHAuY29tLndtZGF0YS5jc2NjLmNsZWFyYW5jZS53b3JrYmVuY2guY29uZmlndXJhdGlvbl9jbGFzcz1jb20ud21kYXRhLmNzY2MuY2xlYXJhbmNlLndvcmtiZW5jaC5jb3JlLkNsZWFyYW5jZVdvcmtiZW5jaENvbmZpZ3VyYXRpb25fU3RhbmRhcmQALURqbmxwLmNvbS53bWRhdGEuY3NjYy5pMThuLmxhbmd1YWdlPWVuAC1Eam5scC5jb20ud21kYXRhLmNzY2MuaTE4bi5jb3VudHJ5PVhYAA==
basic: cmd 11 : -Djnlpx.jvm=C:\Program Files (x86)\Java\jre1.8.0_65\bin\javaw.exe
basic: cmd 12 : -Djnlpx.splashport=57124
basic: cmd 13 : -Djnlpx.home=C:\Program Files (x86)\Java\jre1.8.0_65\bin
basic: cmd 14 : -Djnlpx.remove=false
basic: cmd 15 : -Djnlpx.offline=false
basic: cmd 16 : -Djnlpx.relaunch=true
basic: cmd 17 : -Djnlpx.session.data=C:\Users\dasim\AppData\Local\Temp\session6874989919459371828
basic: cmd 18 : -Djnlpx.heapsize=NULL,NULL
basic: cmd 19 : -Djava.security.policy=file:C:\Program Files (x86)\Java\jre1.8.0_65\lib\security\javaws.policy
basic: cmd 20 : -DtrustProxy=true
basic: cmd 21 : -Xverify:remote
basic: cmd 22 : -Djnlpx.origFilenameArg=C:\Users\dasim\AppData\Local\Temp\cwb-5.jnlp
basic: cmd 23 : -Dsun.awt.warmup=true
basic: cmd 24 : -Djava.security.manager
basic: cmd 25 : com.sun.javaws.Main
basic: cmd 26 : -secure
basic: cmd 27 : C:\Users\dasim\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\53\25f096b5-7062b012
J'ai essayé de reconditionner le fichier JNLP même s'il est déjà conforme à la norme car nous avons d'autres fichiers jnlp d'application qui fonctionnent sans erreur, mais sans succès.
Toute entrée appréciée.