當通過Java Web Start嘗試部署我的JavaFX桌面應用程序時,特別是在決定下載罐子時,出現不一致的行爲。 我的代碼已簽名。JavaFX桌面應用程序通過web開始(jnlp) - 不一致的行爲
需要什麼樣的:
桌面應用程序,100%離線工作,但檢查更新時,有一個互聯網連接。
如果找到更新,詢問用戶是否要下載它。如果是,請更新並運行。如果不是,請運行緩存版本。
需要製作桌面圖標。
目前發生什麼是計劃:
- 在第一次運行時,網站開始下載和驗證完美應用。
- 創建快捷方式並在Windows中顯示可卸載的軟件。
- 從.jnlp文件和互聯網連接運行時,完美工作。
- 從桌面與互聯網(從未斷開連接)運行時,工作完美。
- 當從沒有互聯網的桌面快捷方式運行時,大多完美地工作。
發生了什麼是意外的:
當網絡斷開時,應用程序不會在所有的工作,如果從.jnlp文件運行。控制檯指示代碼庫不可用。據我所知,它應該檢測到互聯網和緩存工作的損失,但事實並非如此。
當離線運行(通過本質上運行帶有-offline參數的.jnlp文件的快捷方式)至少一次,並且再次連接互聯網並重新啓動時,web start會要求用戶確認軟件需要現在上網。如果用戶拒絕,則表示缺少所需的文件。除非重新運行互聯網並且表示可能會聯機,否則程序現在不會再啓動。然後重新下載整個應用程序的所有依賴關係。
即使在離線狀態下,也會發生同樣的情況。離線快捷方式一次運行並運行軟件,然後控制檯顯示一些瓶子已經失效。如果重新啓動,則會出現與上述相同的問題。
如果第一次運行,軟件安裝並啓動,並且在此之後迅速斷開網絡並重新啓動。軟件不能脫機工作,表明並非所有資源都已下載。鑑於所有的罐子都被設置爲熱切下載並且檢查更新被設置爲「超時」,我認爲沒有理由這樣做。
更奇怪的是,Linux和Windows之間的行爲似乎存在差異。雖然不完美,但在Linux上似乎更加一致,離線快捷方式從不檢查更新。雖然在Windows上有時需要重新下載,然後更新。
如果當前的部署不是不可預知的,那麼當前的邏輯似乎是更新應用程序,用戶需要從.jnlp文件而不是從快捷方式運行軟件。
無論如何,除了長描述,任何人都可以在我的.jnlp文件中發現錯誤,下面給出?我真正想要的是在線和離線工作的快捷方式,在線時檢查更新,但不會丟失應用程序的緩存版本,而不會不必要地重新下載軟件。
<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for example-->
<jnlp
spec="7.0+" codebase="http://www.example.co.za/downloads/example"
xmlns:jfx="http://javafx.com"
href="Example.jnlp">
<information>
<title>Example</title>
<vendor>My Company</vendor>
<homepage href="http://www.example.co.za/products" />
<description>Example is an example application</description>
<icon href="../shared/example_icon.png"/>
<icon kind="splash" href="../shared/example_splash.png" />
<icon kind="shortcut" href="../shared/example_icon.png" />
<shortcut online="false" install="true">
<desktop/>
<menu submenu="My Company"/>
</shortcut>
<offline-allowed/> </information> <security> <all-permissions/> </security> <resources>
<jfx:javafx-runtime version="8.0+" href="http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp"/>
</resources>
<update check="timeout" policy="prompt-update"/>
<resources>
<j2se version="1.8+" java-vm-args="-Xms512m"/>
<jar href="Example.jar" download="eager"/>
<jar href="Dependency-1.jar" download="eager"/>
<jar href="Dependency-2.jar" download="eager"/>
<jar href="Dependency-3.jar" download="eager"/>
...
</resources>
<application-desc main-class="ExampleMain">
<applet-desc width="1024" height="768" main-class="com.javafx.main.NoJavaFXFallback" name="Example Application" >
<param name="requiredFXVersion" value="8.0+"/>
</applet-desc>
<jfx:javafx-desc width="1024" height="768" main-class="ExampleMain" name="Example Application" />
<application-desc/>
</jnlp>
IDE和編譯器是IntelliJ IDEA。權限,主類和應用程序名稱也包含在jar清單文件中。 – 2015-02-12 07:33:48