JNLP 扩展无法在 Internet Explorer 中打开

JNLP Extension does not open in Internet Explorer

我在使用 Internet Explorer 打开 *.jnlp 扩展名时遇到问题。该扩展在 Chrome 和 Firefox 中正确打开,让我相信这是 IE 和 可能 网络 server/JNLP 配置的问题。具体来说,Internet Explorer 将 *.jnlp 文件作为 *.xml 脚本打开,而不是下载文件或使用 java Web 启动打开它。

示例:

<?xml version="1.0" encoding="utf-8" ?>
- <!--
 JNLP File for Downtime Registration Application
  -->
- <jnlp spec="1.7+" codebase="http://foo:8080/bar" href="bar.jnlp">
- <information>
  <title>FOO</title>
  <vendor>FOO Inc.</vendor>
  <description>FOO BAR System</description>
- <shortcut online="false">
  <desktop />
  <menu submenu="FOO" />
  </shortcut>
  </information>
- <security>
  <all-permissions />
  </security>
- <resources>
  <j2se version="1.7+" java-vm-args="-client" />

  ... 

  </resources>
  <application-desc main-class="FooBarMainApp" />
  </jnlp>

我已经尝试了以下 "Fixes"/变通方法但无济于事:

更新: 我能够使用下面发布的解决方法解决此问题。但是,如果有人有建议,我正在寻找更永久的修复方法。具体来说,如果可能的话,我正在寻找一种在 business/server 方面解决此问题的方法。如果用户不需要更改任何设置(除了从 IE 切换到其他浏览器),那就太好了。

web.xml 中的 MIME 映射:

  <mime-mapping>
    <extension>jnlp</extension>
    <mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>

我最终通过更改 Internet Explorer 中的特定设置解决了这个问题。

工具 -> Internet 选项 -> 安全 -> 自定义级别... -> 杂项 -> 启用 MIME 嗅探 -> 禁用

我花了一些时间才找到这个修复程序,所以我把它包括在这里以防其他人也有这个问题。

PS:这更像是一种解决方法,而不是永久性修复。任何额外的见解都会有所帮助。

Update:结束了将 <%@ page contentType="application/x-java-jnlp-file" %> 添加到 JNLP 文件的开头然后构建 war。本质上,JNLP 会自动启动,但会出现解析错误。一旦将此行从 JNLP 中取出并重新构建 WAR,JNLP 将启动 javawebstart 并且解析错误消失(又名 问题已解决)。真的不知道为什么,但是这个 magic 似乎奏效了。

我将我的 JWS 应用程序与所有已签名的库一起存储在 EAR/WAR 之外。

如果 JWS 应用程序托管在 Apache 网络服务器中,在 httpd.conf 中,您可以按如下方式添加类型:

AddType application/x-java-jnlp-file .jnlp

此处参考:http://httpd.apache.org/docs/current/mod/mod_mime.html

可以按照以下步骤解决 JNLP 问题:

  1. 打开 Mozilla Firefox,然后下载 JNLP 扩展。 Mozilla 问我如何打开它,我选择了用 javaws 打开(C:\Program Files\Java\jre1.8.0_161\lib)。
  2. 选择从现在开始应用此选择。

我尝试在 Internet Explorer 上打开它,它自动运行。

或者从下载的文件中右键单击 JNLP 扩展文件,用 javaws 打开(在 C:\Program Files\Java\jre1.8.0_161\lib 上)。我没有尝试这个,但我认为它应该有效。