如何使Java程序可安装?

如何使Java程序可安装?,java,eclipse,installation,export,Java,Eclipse,Installation,Export,如何使java程序可安装 我在Eclipse工作区中保存了一个应用程序 我可以将其导出为.jar文件 这是一个“真实世界”的应用程序 如何将其导出为“.exe”文件或“.dmg”,以便安装在另一台计算机上 由于Java是独立于平台的,我认为这是一个为特定操作系统导出的问题 我在谷歌上搜索了很多,读了很多不同的故事,所以我更喜欢有经验的人的回答。你可以使用,或者把程序打包成文件。我想你想要的不仅仅是让程序可以运行(如lobster1234所建议的那样),而是让它真正可以安装。我们最近使用了。它看起

如何使java程序可安装

我在Eclipse工作区中保存了一个应用程序

我可以将其导出为
.jar
文件

这是一个“真实世界”的应用程序

如何将其导出为“.exe”文件或“.dmg”,以便安装在另一台计算机上

由于Java是独立于平台的,我认为这是一个为特定操作系统导出的问题


我在谷歌上搜索了很多,读了很多不同的故事,所以我更喜欢有经验的人的回答。

你可以使用,或者把程序打包成文件。

我想你想要的不仅仅是让程序可以运行(如lobster1234所建议的那样),而是让它真正可以安装。我们最近使用了。它看起来真不错

还有一些关于细节的不错的教程,Jar文件通常是最好的选择,因为JVM可以通过
java-Jar
命令直接执行打包的文件。如果您想从网站等分发应用程序,Java WebStart是一个不错的选择。但是,有些操作系统没有安装该“功能”,即使有JVM。另一个解决方案是至少有3个脚本来启动你的应用程序(Windows的批处理、Linux的shell脚本,以及Mac需要的任何东西——对不起,没有Mac——)


不要创建本机可执行文件(例如,Windows的exe),它们是多余的,因为您已经有了一个JVM用于该文件。

我在这里冒着火焰战的风险,但我是游戏:) 除非您所在的平台已经存在JRE(例如OS X),否则对您和/或最终用户来说,这将是一个麻烦。问题在于java应用程序不是独立的,而是依赖于一个庞大的框架

JRE、JavaWebStart或您使用的任何东西都必须放在目标系统上。你还必须有一个类似的发射器。它可以像运行java的脚本一样简单,提供类路径,等等。如果java“编译”为.exe或其他文件,则不需要这样做,但它就是这样工作的


这就是我关闭将Java部署到最终用户机器的原因之一。只是有很多麻烦。我曾经在一个项目中工作过,我们实际上嵌入了安装程序部署的整个私有jre。虽然不漂亮,但它完成了任务

伙计们已经给了你很多选择,所以我不想再提了。这里缺少的唯一选项是当您确实需要安装程序时,即执行一些逻辑、修改(或至少读取)系统配置、创建桌面快捷方式、复制许多文件、配置第三方产品(可能已经安装)等

在这种情况下,您可以使用InstallAnyWare、EzPack或类似的解决方案(请参阅) 例如,如果您的项目相对简单,我建议您使用Antistaller


顺便说一句,如果您担心您的客户的机器上可能没有安装JRE,您可以使用从java代码生成可执行文件的Launch4J来打包您的代码(或者更好地使用加载程序)

从Java8开始,jdk现在能够为Windows、OSX和Linux生成自己的可安装程序。但是,在Windows上,它取决于Inno Setup 5或更高版本或WiX 3.0或更高版本

生成自包含应用程序的最简单方法是修改部署任务。


可能的重复事实上是两个问题合一。创建启动器(.exe用于Windows,.app用于OSX),然后创建安装程序(.msi用于Windows,.dmg用于OSX)。你有没有检查过仅仅发送一个可执行的JAR是否是一个选项?Dup:@asgs,这是只适用于Windows的。这种问题已经被问过很多次了……其中一个是我的帖子,除此之外,您可以选择将安装程序设置为捆绑JRE或使用上述任何工具请求Java下载。jar文件在Windows下还没有图标。考虑到使用EXE进程,您可以正确附加
AppUserModelID
,以便在中进行正确的跳转列表交互,因此jar作为EXE分发是一个可行的选项Windows 7,尤其是在将任务栏与支持带有
AppUserModelID
property的Windows快捷方式的安装程序组合在一起时,Java是否能够编写独立于平台的应用程序?拥有一个.exe文件会使它变得毫无意义;在这种情况下,还可以为Linux和Mac生成一个可执行文件。现在,在任何操作系统中,都可以有一个带有启动器的图标。这个论点没有多大分量,Java从一开始就被吹捧为平台独立。但是,如果要全面支持目标操作系统的可用功能(在各种Windows操作系统版本的情况下),我们无论如何都必须调整它。标准的java.exe和javaw.exe是不够的。因此,使用启动器或安装程序解决方案有助于在目标操作系统上赞美他们。如果我不同意你的观点,我很抱歉。如果Java应用程序需要“完全支持目标操作系统可用的功能”,它将使用一些抽象类(适配器)中包装的JNI和依赖于操作系统的本机库。许多应用程序已经做到了这一点。但这不是重点。大多数Java应用程序只需要一个Jar文件和一个启动器;如果您不需要使用安全策略或设置某些第三方服务,则不需要安装程序。