在Windows上运行Java软件的最佳方式是什么?是否有写入.BAT文件的标准,可以发现机器上最新安装的JRE?有没有任何Maven插件?与可执行Jar文件有什么关系?打包Java软件以在Windows上运行的最佳方式是什么?
回答
毫无疑问,我建议您使用Java Web Start,因为它允许您轻松控制所使用的版本(以及目前为止更容易使用的更新机制)。
取决于你需要什么。
我们发现使用One-JAR + JSmooth可以提供非常好的用户体验,因为它允许我们分发一个可以放在用户系统任何位置的EXE文件,而不是安装二进制文件,需要安装和卸载等。等等。JSMooth检查是否存在适当的Java运行时,并且如果没有发现,则重定向到官方下载站点。
One-jar的原因是,你通常需要使用最好有独立的库jar,但JSmooth只允许一个jar文件。
此外,One-Jar SDK和JSmooth可以在不绑定Windows的情况下编写脚本,因此我们可以在运行在Linux上的Hudson引擎上构建新版本。
在过去,我使用了像launchForJ这样的java安装程序包。但是,许多这些软件包使用Java,因此您可能需要使用本地windows代码编写的批处理或简单可执行文件,以快速检查Java是否已安装,然后运行安装程序。
由于Java在安装过程中使用系统变量,因此应该能够以这种方式检查您需要的版本(或更高版本)是否存在。
标准的方法是使用Java Web Start。
使用Java Web Start技术,独立的Java软件应用程序可以通过单击网络进行部署。 Java Web Start的确保应用程序的最新版本将被部署,以及正确版本的Java运行时环境(JRE)的
Maven有一个Webstart Maven Plugin帮助构建可通过Web部署的应用程序软件包开始。
另一种解决方案是使用跨平台安装程序生成器来生成安装程序。我个人很喜欢IzPack(我认为这JSmooth是非常相似的,但我有一个的IzPack更多的经验),如果你是专门针对Windows平台上,你可以使用的IzPack来Build [a] Native Windows Installers with IzPack Native Launcher:
的问题仍然的IzPack出现当 目标系统没有安装JRE 。用户首先需要安装 ,然后运行IzPack 安装程序。这与Linux或BSD用户 不存在问题,因为他们通常是熟练的,并且他们知道如何通过手动或使用包装 系统(RPM,DEB,ebuilds,端口, ...)来执行此操作。同样,一个Mac OS X用户 没有太大的问题,因为它是 可用于操作系统。 但是在Windows平台上,情况更复杂 ,因为 必须安装JRE。更糟糕的是, 几个实例可以安装在 一个有时凌乱的情况。
IzPack Native Launcher试图通过 来解决这个问题。它是一个C++原生 应用程序,可在 下获得非常宽松的MIT许可证,而 可将wxWidgets用于GUI。它是 因此是跨平台的(对于 历史学家:它最早是在 上开发的一个FreeBSD框),但大多数人会在 上需要它。它使用一个简单的 配置文件,并将首先检查一个JRE的 。如果可以找到, 它会弹出一个对话框,让下面的 选项之间的 用户选择:
- 手动从互联网上指定一个JRE位置
- 下载一个
- 安装一个这是由包装商提供的(如果有的话)。
IzPack还提供Maven Plugin。值得支票。
即使对Java 6进行了大修,Java WebStart仍然不知道如何处理更新,如“有新版本,在后台下载?”正常。 – 2010-07-09 13:05:07
@Thorbjørn事实上,不是JWS如何工作,你必须要求用户重新启动他们的应用程序。 – 2010-07-09 13:21:30
,然后他们必须下载完整的升级之后才能继续工作......感叹.. – 2010-07-10 21:27:55
- 1. 在Linux上提供Java软件的最佳方式是什么?
- 2. 什么是更新TextMate软件包的最佳方式?
- 3. 在Java中运行JavaScript的最佳方式是什么?
- 4. 在Java中开发游戏的最佳软件包是什么?
- 5. 在Hadoop上运行Lucene/Solr的最佳方式是什么?
- 6. 在aws上运行django项目的最佳方式是什么?
- 7. 在运行时替换控件的最佳方式是什么?
- 8. 什么是测试邮件列表软件的最佳方式?
- 9. 在Windows 2003上运行Jabber/XMPP的最佳选择是什么?
- 10. 在同一台计算机上运行的Python软件之间进行通信的最佳方式是什么?
- 11. 什么是存储软件文档的最佳方式?
- 12. 什么是控制Flex + PHP软件版本的最佳方式?
- 13. 什么是促进软件合作的最佳方式org
- 14. 集成Picasa和JSF软件的最佳方式是什么?
- 15. 什么是在网页上“包装文本”的最佳方式
- 16. 打包iPhone/iPad静态库的最佳方式是什么?
- 17. 为Python打包C代码的最佳方式是什么?
- 18. 打包工作日的最佳方式是什么?
- 19. 什么是在emacs中运行守卫的最佳方式
- 20. 使方法运行异步的最佳方式是什么?
- 21. 在Emacs中进行Java开发的最佳方式是什么?
- 22. 在Windows中异步运行多次PHP脚本的最佳方式是什么?
- 23. 在Windows 7中运行Linux虚拟服务器的最佳方式是什么?
- 24. 在PHP中包含文件的最佳方式是什么?
- 25. 在Java中创建XML文件的最佳方式是什么?
- 26. 在java程序运行之间存储数据的最佳方式是什么?
- 27. 在Android上进行SMS_RECEIVED工作的最佳方式是什么?
- 28. 从命令行运行中小型Java程序的最佳方式是什么?
- 29. 在Mongo的数据上运行Map/Reduce的最佳方式是什么?
- 30. 在MySQL的大型表上运行INNER JOIN的最佳方式是什么?
+1为标准Web Start解决方案 – 2010-07-08 16:14:57