我有一個簡單的Web Start應用程序坐在文件服務器上。該目錄包括以下內容:Java Web Start找不到具有格式化版本文件名的jar
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>
的問題是,網絡開始試圖在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+)
我也試圖消除從版本規範+
並出現相同的錯誤(除從當然遺漏加)。在jnlp文件中寫作foo__V1.1.jar
的作品當然會打敗這一點。
Tha t JNLP無效。請務必使用[JaNeLA](http://pscode.org/janela/)進行檢查。 –
謝謝,未關閉的更新元素是一個錯字,但應用程序desc中的無效屬性是錯誤的 - 謝謝你的擡頭。有趣的是,儘管存在這些錯誤,但JNLP仍能正常運行 - 特別是未關閉的更新元素使其無效的XML。 –
*「有趣的是,即使出現這些錯誤,JNLP也能正常工作」* JWS客戶端不會拒絕無效的JNLP文件,而是試圖猜測是什麼意思。我認爲這是一個非常糟糕的主意 - [GI/GO](http://en.wikipedia.org/wiki/Garbage_in,_garbage_out)。任何人猜測,兩種不同版本的客戶端可能會解析無效信息。 :( –