我有一个简单的 Web Start 应用程序,它位于文件服务器上。该目录包括以下内容:
foo__V1.1.jar
runfoo.jnlp
内容runfoo.jnlp
如下:
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" href="http://myserver.com/runfoo.jnlp" codebase="http://myserver.com">
<information>
<title>Foo</title>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.7.0_06+" href="http://java.sun.com/products/autodl/j2se" />
<jar href="foo.jar" main="true" version="1.0+"/>
<property name="jnlp.versionEnabled" value="true"/>
</resources>
<application-desc name="Foo" main-class="com.myserver.foo.Foo" width="640" height="480" />
<update check="always" policy="always" />
</jnlp>
问题是 Web Start 试图访问http://myserver.com/runfoo.jnlp?version-id=1.0%2B上的文件,但没有找到它。
我假设在这个简单的实例中让 Web Start 自动获取最新的 jar 版本需要一些额外的步骤,但是经过大量的谷歌搜索后,我发现所有的步骤都是相同的:
- 将文件重命名为
<file_name>__V<versionnumber>.jar
- 将
versionEnabled
属性添加到 jnlp - 享受版本化的好处
当我指定一个明确的文件名时,jnlp 文件运行得非常好,但是当我尝试实现版本控制时总是失败。
我确定我错过了一些重要的东西,但我无法在任何地方找到它。我猜想虽然我的设置很简单,但它并不简单,因为它既能工作又能工作。
任何帮助都感激不尽 :)
明确的例外是:
com.sun.deploy.net.FailedDownloadException: Unable to load resource: (http://myserver.com/foo.jar?version-id=1.0%2B, 1.0+)
我也尝试+
从版本规范中删除,并且发生了同样的错误(当然除了缺少的加号)。写入jnlpfoo__V1.1.jar
文件是可行的,但当然会破坏这一点。