我有一个基于 jws 的应用程序。
它被部署在 Web 服务器上,客户端从浏览器下载文件并运行它。
这会创建一个桌面快捷方式,并且应用程序可以完美运行。
现在,如果我更改服务器上 jnlp 文件中的一些属性,然后从桌面快捷方式或下载的 jnlp 文件本身运行已安装的应用程序(在客户端计算机上),它不会得到更新。
我已经在 jdk 版本1_6_30 和 1_7_21上验证了这一点。这两个版本似乎已经解决了以前与缓存路径中的空格相关的错误。
Windows XP/7/8 上仍然存在问题。
原始 jnlp 文件:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="path/to/fileLocation" spec="1.0+" href="demo.jnlp" >
<information>
.
.
.
<offline-allowed/>
<shortcut online="false">
<desktop/>
<menu submenu="Demo"/>
</shortcut>
</information>
<update check="always" policy="always"/>
<!--request all permissions from the application. This does not change-->
<security>
<all-permissions/>
</security>
.
.
<resources>
<!-- Here we are referring to the wrapper feature since it transitively refers to all the other plug-ins necessary -->
<extension>
name="Wrapper feature"
href="plugin_<some_random_generated_string_1>.jnlp"/>
</extension>
</resources>
.
.
.
<resources os="Windows" arch="x86">
<j2se version="1.6+" java-vm-args="-Xms400m -Xmx800m"/>
</resources>
更新了 jnlp 文件:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="path/to/fileLocation" spec="1.0+" href="demo.jnlp" >
<information>
.
.
.
<offline-allowed/>
<shortcut online="false">
<desktop/>
<menu submenu="Demo"/>
</shortcut>
</information>
<update check="always" policy="always"/>
<!--request all permissions from the application. This does not change-->
<security>
<all-permissions/>
</security>
.
.
<resources>
<!-- Here we are referring to the wrapper feature since it transitively refers to all the other plug-ins necessary -->
<extension>
name="Wrapper feature"
href="plugin_<some_random_generated_string_2>.jnlp"/>
</extension>
</resources>
.
.
<resources os="Windows" arch="x86">
<j2se version="1.6+" java-vm-args="-Xms300m -Xmx600m"/>
</resources>
java-vm-args中的更改不会得到反映。
如果我重新下载 jnlp 文件然后从中运行,则更新有效。在这种情况下,桌面快捷方式仍然指的是旧的,这是一种痛苦:(
使用 JaNeLa 验证了 jnlp。
编辑:
此 demo.jnlp 还包括另一个功能 jnlp(添加在块引用中),其中包括应用程序所需的所有 jar。由于在应用程序的每次更新中,此功能 jnlp 也会更新,但不会在客户端上反映出来。