我有一个简单的可以成为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版本需要一些额外的步骤,但经过大量的Google搜索后,我发现所有步骤都是一遍又一遍:
<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+)
我也尝试从版本规范中删除+
并发生相同的错误(当然除了缺失加之外)。在jnlp文件中写foo__V1.1.jar
有效,但当然会失败这一点。
答案 0 :(得分:3)
版本化文件名是JNLP download servlet使用的惯例,用于了解客户端要求lib.jar?version=something
时要提供的内容。您需要服务器端的下载servlet(或者您需要在mod_rewrite
规则或类似规则中复制其行为),只有具有版本名称的普通文件是不够的。
答案 1 :(得分:0)
对于粉丝来说,对我来说也是一个类似的问题
java.io.IOException: Error returned: 10 Could not locate resource
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.downloadResource(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
“无法启动应用程序”
com.sun.deploy.net.FailedDownloadException: Unable to load resource: (http://host:port/webapp_name/app/jar-name.jar?version-id=1.5.0-20160707.182810-19, 1.5.0-20160707.182810-19)
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.downloadResource(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.deploy.cache.ResourceProviderImpl.getResource(Unknown Source)
at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
意味着“特殊的内部文件version.xml与web-app目录中部署和存在的文件名不匹配”: