2015-02-12 29 views
3

當通過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> 
+0

IDE和編譯器是IntelliJ IDEA。權限,主類和應用程序名稱也包含在jar清單文件中。 – 2015-02-12 07:33:48

回答

0

webstart確實有很多問題和意外的行爲。 我有一些webstart應用程序,並在部署它們時意識到最好將更新選項保留爲默認值以避免出現問題。看起來像唯一不同於我的jnlp的是你請求更新提示,而我讓它自動更新。嘗試刪除標籤以使其使用默認值,並查看是否修復了問題或至少改進了問題。

如果你喜歡,你可以試試我在webstart JNLP,看看我的JNLP版本在您的計算機表現良好:

http://www.runiter.com/graphing-calculator/online.htm

一兩件事:一個事實,即它並沒有在程序運行時你雙擊jnlp沒有互聯網連接是正常的。當你運行jnlp時,它需要互聯網。只有快捷方式才能在離線模式下運行。

+0

圖形計算器似乎更長時間通過Webstart部署,因此沒有JNLP。 – 2017-06-30 03:58:30

+0

是的,我們決定選擇可下載的exe,因爲webstart解決方案不可靠。如果您想看到我們的舊webstart配置的代碼,它仍然可以在此訪問(儘管其簽名已過期):http://www.runiter.com/webstart/gc3/grapher.jnlp – 2017-06-30 19:27:30

1

<application-desc/>應該是</application-desc>

相關問題