【发布时间】:2012-09-14 09:41:49
【问题描述】:
非常感谢所有愿意花时间阅读的人。
我正在努力制作一个 webstart Swing 1.4.2_12 应用程序以使用 java webstart 1.6.0_29 启动。
这里是场景:
- 所有流量都通过 HTTPS 完成
- 用户单击网页上的链接以启动应用程序:servlet 生成的jnlp文件
- Java webstart 客户端 (1.6.0_29) 启动并加载应用程序 一口气
- 因为jnlp描述符java中j2se版本设置为1.4.2_12 webstart 1.4.2_12 用于启动应用程序(由 1.6.0_29)
- Java webstart 1.4.2_12 启动失败,声称找不到某些幽灵“javaws2”文件
报告以下消息:
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:空
Pragma:空
这些标头是防止 IE 在 HTTPS 模式下禁用缓存所必需的,这会阻止 java webstart 找到加载的 jnlp 文件(因为它没有被缓存)。
Mime-type 设置为:application/x-java-jnlp-file
我不明白的是为什么java 1.4.2_12找不到JWS 1.6.0_29加载的jnlp文件?
感谢阅读。
【问题讨论】:
-
为什么应用程序。使用过时 JRE 的过时版本? JNLP 中如何指定 JRE?您是否收到有关在旧 JRE 中运行代码的警告?应用程序。在较新的 JRE 中工作(达到测试的极限)?
-
3 分中有 2 分还不错,但 4 分中有 0 分很糟糕。 :(
-
@AndrewThompson 感谢您的回复。该应用程序使用过时的 JRE,因为它是 10 多年的遗留应用程序。并且与 1.5/1.6 JRE 不兼容,某些功能已损坏。更重要的是,重新测试整个应用程序是不可能的。所以我们不能考虑迁移到 1.5/1.6。因此,我们在 JNLP 描述符中声明 **
** 以指示 JWS 切换到 1.4.2_12。我目前正在对问题进行深入分析,最终将在此处发布我的结果。到目前为止,我怀疑根 标记的空 href 属性是导致该问题的原因。
标签: java https jnlp java-web-start