2011-01-31 68 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'可能是有意义的。

相关问题