当前位置: 首页 > 知识库问答 >
问题:

FileNotFoundException通过HTTPS使用java webstart 1.6启动1.4.2 webstart应用程序

鄢禄
2023-03-14

感谢所有愿意花时间阅读的人。

我正在努力使一个webstart Swing 1.4.2_12应用程序启动与java webstart 1.6.0_29。

以下是场景:

  1. 所有通信都通过HTTPS完成
  2. 用户在网页上点击链接以启动应用程序:servlet生成的jnlp文件
  3. Java webstart客户端(1.6.0\u 29)一下子启动并加载应用程序
  4. 因为j2se版本在jnlp描述符中设置为1.4.2\u 12,所以java webstart 1.4.2\u 12用于启动应用程序(由1.6.0\u 29加载)
  5. Java webstart 1.4.2\u 12在启动时失败,声称找不到某个ghost“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时会出现相同的错误。

JNLP servlet将以下两个HTTP头发送到客户端:

缓存控制:空

这些头是防止IE在HTTPS模式下禁用缓存所必需的,这会阻止java webstart查找加载的jnlp文件(因为它没有缓存)。

>

  • Mime类型设置为:应用程序/x-java-jnlp-file

    我不明白的是,为什么java 1.4.2\u 12找不到JWS 1.6.0\u 29加载的jnlp文件?

    感谢阅读。

  • 共有1个答案

    缪风史
    2023-03-14

    @安德鲁:谢谢你的关注。

    下面是我对这个问题的结论。

    简而言之:始终在jnlp标记中设置href属性!

    <jnlp spec="1.0+" codebase="htt://myhost/codebase" href="mustSetThisAbsolutelyForJWS-1.4.2_12.jnlp">
    ...
    </jnlp>
    

    多个HTTP调试会话表明:

    1. 用户点击一个jnlp链接,浏览器下载并缓存JNLP文件。
    2. JWS 1.6。0_29启动,然后读取下载的JNLP文件。
    3. JWS 1.6。0_29下载所有JAR文件,然后切换到JWS 1.4。2_12。
    4. JWS 1.4。2_12启动,然后显然依次读取JNLP文件。
    5. JWS 1.4。2_12尝试检索href属性指向的JNLP文件。
    6. 由于href为空,JWS报告“无法加载指定的文件/URL: C:\DOCUME~1\BENOIT~1。VAT\LOCALS~1\Temp\javaws2”。(顺便说一句,幽灵javaws2有时被命名为javaws10或类似名称)

    请注意:在这种情况下使用JWS 1.4或1.5时,应用程序将启动。该问题仅在JWS 1.6用于运行1.4.2_12应用程序时出现。当未设置href属性时,JWS 1.5和1.6不会失败。相反,它们只是按原样使用JNLP,检查JAR更新,然后启动应用程序。

    1. 用户单击jnlp链接,jnlp文件将由浏览器下载并缓存

    这对我来说是一个巨大的痛苦,我花了几天的时间才弄明白。希望有一天这能帮助别人。

     类似资料:
    • 因此,我完成了以下步骤: > 然后提示我输入密码和其他各种信息。我像这样完成了: 在应用程序中添加了以下行。yml文件来自src/main/resources: 已启动Spring Boot应用程序。出现此异常: 其主要思想是PKCS12提供程序不存在。 有什么想法吗? 也许使用不同的提供商?如果答案是肯定的,我应该使用哪个提供商?

    • 下面是上面文件引用的: 但当以的身份运行InteliJ时,问题就会消失。

    • 问题内容: 当前,我有一个Java Standalone Swing应用程序。 现在,当用户单击Swing应用程序中的按钮时,我想启动另一个Java应用程序(说:Calculator.jar) 我可以知道什么是便携式方法吗?这样它就可以在多个OS中工作吗? 问题答案: 使用或只是将其放在类路径中并调用其。

    • 显示 “无法导入资源”@AcmeDemoBundle/Controller/SecuredController。php“from”D:/UserData/WWWRoot/Symfony/app/config/routing。yml”。确保“AcmeDemoBundle/Controller/SECUEDCONTROLLER”。php“bundle已正确注册并加载到应用程序内核类中。” 这是我的 处

    • 我有一个spring启动应用程序,我需要通过进入文件夹目录并通过命令行启动我的web应用程序来启动它。我有一门课叫应用。java及其内部代码如下所示。 我设置了类路径,然后试图运行命令"",但我得到了这个错误消息""

    • 我正在尝试发布我的第一个Android应用程序,以发送给一些测试人员。但是,我遇到了一个问题。当您退出应用程序,然后通过其图标启动它重新进入它时,它会重新启动整个应用程序,而不是返回到其以前的位置。即使您在退出后立即重新进入,也会发生这种情况。但是,如果我按住主屏幕按钮并通过最近的应用程序列表启动它,则不会发生这种情况。 我在网上搜索过其他有这个问题的人,只有少数人,但没有人能确切回答为什么会发生