非常感谢所有需要时间阅读的人 .
我正在努力使用java webstart 1.6.0_29创建一个Webstart Swing 1.4.2_12应用程序 .
这是场景:
-
所有流量都通过HTTPS完成
-
用户在网页上打开链接以启动应用程序:servlet生成的jnlp文件
-
Java webstart客户端(1.6.0_29)启动并一口气加载应用程序
-
因为在jnlp描述符中将j2se版本设置为1.4.2_12,所以java webstart 1.4.2_12用于启动应用程序(由1.6.0_29加载)
-
Java webstart 1.4.2_12 fails on startup claiming that it cannot find some ghost "javaws2" file
报告以下消息:
CouldNotLoadArgumentException[ Could not load specified file/URL : C:\DOCUME~1\BENOIT~1.VAT\LOCALS~1\Temp\javaws2]
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
完整的堆栈跟踪是:
java.io.FileNotFoundException: C:\DOCUME~1\BENOIT~1.VAT\LOCALS~1\Temp\javaws2 (File not found)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
- 禁用HTTPS时会发生同样的错误 .
以下HTTP标头都由JNLP servlet发送到客户端:
Cache-Control : empty
Pragma : empty
这些标头是防止IE在HTTPS模式下禁用缓存所必需的,这会阻止java webstart找到加载的jnlp文件(因为它没有被缓存) .
-
Mime-type设置为:application / x-java-jnlp-file
-
我不明白为什么java 1.4.2_12找不到JWS 1.6.0_29加载的jnlp文件?
谢谢阅读 .
1 回答
@Andrew:谢谢你的兴趣 .
这是我对这个问题的结论 .
简而言之: Always set the href attribute in the the jnlp tag !
多个HTTP调试会话表明:
场景1:href属性为空,JNLP文件与客户端上的JWS 1.6关联
用户单击jnlp链接,浏览器下载并缓存JNLP文件 .
JWS 1.6.0_29启动然后读取下载的JNLP文件 .
JWS 1.6.0_29下载所有JAR文件,然后切换到JWS 1.4.2_12 .
JWS 1.4.2_12启动,然后显然读取了JNLP文件 .
JWS 1.4.2_12尝试检索href属性指向的JNLP文件 .
Since href is empty, JWS reports "Could not load specified file/URL : C:\DOCUME~1\BENOIT~1.VAT\LOCALS~1\Temp\javaws2". (As a side note, ghost javaws2 is sometimes named javaws10 or similar)
场景2:href属性设置为正确值,JNLP文件与客户端上的JWS 1.6关联
用户单击jnlp链接,浏览器下载并缓存JNLP文件 .
JWS 1.6.0_29启动然后读取下载的JNLP文件 .
JWS 1.6.0_29下载所有JAR文件,然后切换到JWS 1.4.2_12 .
JWS 1.4.2_12启动,然后显然读取了JNLP文件 .
JWS 1.4.2_12尝试检索href属性指向的JNLP文件 .
JWS 1.4.2_12 downloads href属性指向的JNLP .
新下载的JNLP文件中引用了
JWS 1.4.2_12 downloads all JNLP JAR files .
JWS 1.4.2_12正确启动应用程序 .
这对我来说是一个巨大的痛苦,并花了我几天时间来解决这个问题 . 希望有一天能帮助别人 .