2011-01-31 31 views
2

希望我能夠清楚地解釋這一點。我正在創建一個依賴於其他外部jar文件的桌面應用程序。例如,我的應用程序是基於Spring的,因此我的應用程序中需要一些SpringFramework jar文件。使用Java WebStart創建桌面應用程序的最佳做法

我正在使用Java WebStart'啓動'這個桌面應用程序。 (至於爲什麼我這樣做是因爲我需要通過我們正在構建的網站來執行這個定製的桌面應用程序)。

但是當我通過點擊jnlp描述文件來執行我的桌面應用程序時,我遇到了麻煩。它給出了錯誤,指出我的桌面應用程序正在使用的某些類沒有類定義。然後我意識到,當我的桌面應用程序打包爲JAR文件時,它並未包含我的其他JAR依賴關係。因此,錯誤的原因。我想,我可以在我的桌面JAR文件中包含外部JAR依賴項,但這會使我的桌面JAR文件相當大。然後,由於單擊JNLP描述符文件將始終從服務器的桌面JAR文件獲得源文件,因此會由於大型JAR文件而使JAR文件的下載速度變慢。 (除非我能'告訴'JNLP描述符在服務器上沒有新版本時不要下載。)

無論如何,我在想如果這是一個可接受的方法,我的桌面JAR文件將不包括JAR依賴關係但只提及它。當我的桌面應用程序啓動時,它將檢查這些依賴關係是否在桌面上可用,如果它不可用,它將調用另一個JNLP描述符,它將下載外部JAR文件並將它們複製到我的桌面的預定位置應用參考。這會工作嗎?還是有我的問題更簡單的解決方案?

感謝

回答

3

JNLP文件應包括到這兩個主要文件,但也都需要庫的引用。這是標準功能,你應該這樣做。

請注意,您應該在文件名中使用時間戳,以避免更新代碼時出現緩存問題。

2

您需要讓您的JNLP引用您所擁有的其他罐子。是的,這需要稍微長一點的下載,但只要你不包括一堆你不需要的罐子,這不應該花很長時間。 Web Start足夠智能,不會重新下載相同應用程序後續啓動時未更改的jar。我有Java Web Start應用程序,它有幾個大型的罐子,這很好。

至於把額外的瓶子放在用戶的機器上,我不會建議這個。如果您打算這麼做,那麼使用Web Start並沒有太多意義,您也可以在桌面上安裝整個程序。

0

其他答案涵蓋了大多數的基礎,但只是想我應該補充說,將額外的Jars標記爲download ='lazy'可能是有意義的。

相關問題