簡體   English   中英

Java Web Start找不到格式化文件名為filename的jar

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM