JNLP扩展无法在Internet Explorer中打开

bal*_*ker 6 java jnlp internet-explorer java-web-start

我有一个使用Internet Explorer打开*.jnlp扩展的问题.该扩展程序在Chrome和Firefox中正常打开,让我相信它是IE的问题,可能还有 Web服务器/ JNLP配置.具体来说,Internet Explorer将*.jnlp文件作为*.xml脚本打开,而不是下载文件或使用java web start打开它.

例:

<?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>
Run Code Online (Sandbox Code Playgroud)

我尝试了以下"修复"/解决方法无济于事:

  • 以管理员身份运行IE
  • 将URL添加到兼容性视图
  • 将JAVA设置更改为"始终允许JNLP/MIME"
  • 重置Internet Explorer高级设置
  • 更改Web服务器的web.xml文件中的MIME扩展设置
  • 将IE设置更改为始终允许文件下载

更新: 我能够通过下面发布的解决方法解决此问题.但是,如果有人有建议,我正在寻找更永久的解决方案.具体来说,我正在寻找一种方法来解决业务/服务器端的问题,如果可能的话.如果用户不需要更改他们的任何设置(其他然后从IE切换到不同的浏览器)将是很好的.

web.xml中的MIME映射:

  <mime-mapping>
    <extension>jnlp</extension>
    <mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>
Run Code Online (Sandbox Code Playgroud)

bal*_*ker 9

我最终通过更改Internet Explorer中的特定设置来解决此问题.

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

我花了一段时间才找到这个修复程序,所以我把它包含在这里,万一其他人也有这个问题.

PS:这是一个解决方法,然后永久修复.任何额外的见解都会有所帮助.

更新:结束将<%@ page contentType ="application/x-java-jnlp-file"%>添加到JNLP文件的开头,然后构建战争.本质上,JNLP会自动启动,但会出现解析错误.一旦这条线从JNLP中取出并重新构建了WAR,JNLP将启动javawebstart并且解析错误消失了(解决了AKA 问题).不知道为什么,但这种魔法似乎有效.

  • 我忘了补充一点,如果有人还有任何想法,我会很感激他们. (2认同)