在出现连接问题时,某些ISP将返回html http错误页面而不是jnlp文件(但我也认为例如酒店wifi登录页面)。不幸的是,Java Web Start决定缓存这些文件,就像它们是jnlp一样,然后,由于它们不是有效的jnlp文件,即使临时连接问题已解决,也永远不会再次从该路径运行该文件。
即使重新下载了jnlp文件(在浏览器中)并重新运行它,它也会失败,因为它尝试在继续之前解析缓存的资源。不用说安装的桌面启动器也坏了。
解决方法是转到 配置Java-> Internet临时文件->视图->显示“资源” 然后手动删除“ jnlp”文件。
下面是实际的jnlp。我可以通过编辑Java缓存并在其中插入一个字符以防止其解析来模拟该问题。
<jnlp spec="1.0+"
codebase="https://acme.net/apps/ourapp/"
href="launcher.jnlp">
<information>
<title>Acme Java Program</title>
<vendor>Acme Ltd.</vendor>
<icon kind="shortcut" href="icon64.png" width="64" height="64"/>
<icon kind="shortcut" href="icon32.png" width="32" height="32"/>
<shortcut online="true" install="true">
<desktop/>
</shortcut>
</information>
<resources>
<j2se version="1.7+"
href="http://java.sun.com/products/autodl/j2se"/>
<jar href="acmelauncher-signed.jar" main="true" />
<property name="jnlp.versionEnabled" value="true"/>
</resources>
<application-desc
name="Acme Java Program"
main-class="net.acme.Main">
<argument>application_url=https://acme.net/apps/ourapp/"</argument>
</application-desc>
<security><all-permissions /></security>
<update check="always" policy="always"/>
</jnlp>
Web Start会缓存无效的jnlp文件似乎很疯狂-替换已经是有效的,实际上不是实际更新的jnlp文件。
我已经非常努力地寻找,并且找不到其他地方提及此问题,因此希望有解决的办法,但是仅凭jnlp很难解决它的问题,因为无需解析该问题就可以发生jnlp似乎。它只是间歇性的,但是如果有足够的用户,我认为碰到它是不可避免的。有没有一种方法可以配置webstart