2011-11-24 23 views
7

它是合法的,這樣的指定代碼庫:帶本地代碼庫的JNLP - 如何更新?

<jnlp spec="6.0+" 
    codebase="file:/c:/MyApp/" 
    href="myapp.jnlp"> 

在導入此與JWS它創建桌面快捷方式和應用工作。

但是,有一點與遠程代碼庫有很大不同。當我在應用程序運行時更新這些文件時,它基本上停止工作與ClassNotFoundExceptions淹沒。看起來JWS似乎沒有複製罐子,或者因爲它們被更新以某種方式覆蓋正在運行的進程所使用的罐子而立即複製它們。

我怎樣才能讓它工作,就好像文件是遠程的?也就是說,將文件複製到緩存並僅在啓動時檢查更新。

編輯:我還沒有找到辦法做到這一點,並決定與自制的替代品。一路上,我發現了幾個錯誤,並提出了一些我總結在http://squirrel.pl/blog/2011/11/24/java-web-start-bugs-offline-edition/的觀察結果。張貼在這裏,以防它可能對任何人有用。

+0

你想用本地代碼庫解決什麼問題? –

+0

除此之外,還有以下幾點:依賴基於Web的緩慢而脆弱的更新,並利用我們現有的系統來抽取各種文件,安裝,更新等以選擇計算機。 –

+1

「脆弱的基於Web的更新」。只要確保文件被更新,它就會得到一個新的URL並相應地更新JNLP文件。 –

回答

-4

在我們的應用程序,該代碼庫是:

<jnlp codebase="http://xxxx.xxx.xxx/jars"> 

和,你的jar文件應該放在your_webapp_root_directory /瓶。要進行測試,您可以在瀏覽器中輸入一個網址:​​,如果您可以下載xxxx.jar文件,它可以正常工作。

+0

對不起,但我特別詢問了本地代碼庫。我認爲你完全沒有讀過這個問題。 –

0

爲了使您的應用程序自動更新,您應該使用<update>標記。

<update check="always" policy="always"/> 

而且還如果你願意,你的應用程序可以在離線使用<offline-allowed/>運行。
同樣爲了提供所有安全權限,您需要添加<security>的標籤。
將以下標籤添加到您的JNLP文件。

<information> 
     <offline-allowed/> 
    </information> 

    <security> 
     <all-permissions/> 
    </security> 

    <update check="always" policy="always"/> 

    <resources> 
     <jar href="your-signed.jar" main="false" download="eager"/> 
    </resources> 
相關問題