[英]Java Web Start can't find jar with formatted version filename
我有一個簡單的可以成為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+)
我也嘗試從版本規范中刪除+
並發生相同的錯誤(當然除了缺失加之外)。 在jnlp文件中foo__V1.1.jar
是有效的,但當然會失敗這一點。
版本化文件名是JNLP下載servlet用於在客戶端請求lib.jar?version=something
時知道要提供什么的約定。 您需要服務器端的下載servlet(或者您需要在mod_rewrite
規則或類似規則中復制其行為),只有具有版本名稱的普通文件是不夠的。
對於粉絲,對我來說也是一個類似的問題
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目錄中部署和存在的文件名不匹配”:
參考: http : //docs.oracle.com/javase/6/docs/technotes/guides/javaws/developersguide/downloadservletguide.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.