支持 Windows 7 的 Java exe 启动器

Posted

技术标签:

【中文标题】支持 Windows 7 的 Java exe 启动器【英文标题】:Java exe launcher with support for Windows 7 【发布时间】:2011-10-28 20:47:48 【问题描述】:

问题

目前我使用 exe4j 4.4.2 将我们的客户端应用程序包装在 Windows 原生可执行文件中,但结果与 Windows 7 的集成效果不佳。

例如:当我在任务栏中单击鼠标右键时,它只提供一个关闭应用程序的弹出窗口,但没有固定。而 Eclipse 的 Equinox 启动器则虚张声势。

我正在寻找具有以下功能的 java exe 启动器:

将 jar 包装在 Windows 本机可执行文件中(没有 Java Web Start 或类似的) 不从可执行文件中提取 jar 不需要“程序文件”中的写入权限 使用可执行文件名作为进程名(仅一个进程) 与 Windows 7 完美集成(尤其是固定在任务栏中) 允许设置 JVM 参数(尤其是堆大小) JRE 搜索的灵活自定义 轻量级 积极维护 在 Ant 构建中很好地集成 最好是免费的

我已经检查了以下内容:

exe4j

缺少 Windows 7 集成 它不贵,但订购和 将许可证分发给构建机器是一件痛苦的事情。 JRE 搜索不够灵活

日食春分

不轻量级 似乎做任何我想做的事,除了我不知道怎么做 将它与非基于 Eclipse 的应用程序一起使用。 我可以在 OSGI、PDE-Build 世界之外使用它吗?

WinRun4J

JRE 搜索没有很好的记录 尽管功能集令人难以置信,但似乎并未广泛使用,我缺少什么?

Launch4J

不支持在 Windows 7 中设置进程名称(错误 ID 3353972)。 有一个补丁(Bug ID 1670471),但它已被引用拒绝 到已死的 jliftoff。 JRE 搜索不够灵活。

JS平滑

似乎没有积极维护。 最新版本是 2007 年,远早于 Windows 7。

还有其他选择吗? 是否有机会将 Eclipse 启动器与非基于 Eclipse 的应用程序一起使用?

【问题讨论】:

听起来你真正想要的是关于在没有 Equinox 的情况下使用 Eclipse 原生启动器的方法。 AFAIK,intellij idea 使用的是 exe4j,可以固定。您可能需要通过代码执行某些操作,具体我记不太清了。 原生 Eclipse 启动器是一个 C shim,可以在 Eclipse 的 Git 存储库之一中找到。 也可以参考这个问题:***.com/questions/1834599/… @bbuser:我对这些部分也知之甚少,但从我在文档中读到的内容来看,启动器和 Equinox(或 SWT)并没有紧密耦合。并且启动器应该是一个相当小的软件,所以应该可以轻松地提取它。 【参考方案1】:

试用 Advanced Installer http://www.advancedinstaller.com/java.html(这里有免费版)。

【讨论】:

谢谢,Advanced Installer 看起来很有前途。【参考方案2】:

我对 WinRun4J 很满意。 JRE 搜索对我来说很好用。如果在 Windows 注册表中安装并注册了多个 JRE 和 JDK,它有时会阻塞,尤其是在 64 位系统上,但这通常可以通过在相应的 .ini 文件中提供正确的路径来解决。

我没有使用 Launch4J,因为它在 JRE 安装文件夹中创建了一个新的(临时).exe,这对我来说有点奇怪。该方法的优点是,它可以为 32 位和 64 位 JVM 使用单个 .exe

【讨论】:

谢谢,这是我正在寻找的对 WinRun4J 的确认。关于 JRE 搜索:并不是我对它不满意,而是我有特殊要求,我正在寻找一种能够让我精确控制所发生情况的解决方案。也许 WinRun4J 做了我想要的,只是没有记录。使用 Launch4J 创建 .exe 不仅奇怪,而且在 Windows 7 上失败,因为无法写入 JRE 文件夹。【参考方案3】:

在我看来,您只需要使用 Launch4J。进程名称与您启动时使用的 .exe 名称相匹配。以这种方式包装的程序的一个很好的例子是“Keystore Explorer 4.01”。

【讨论】:

正如我所说,Launch4J 不支持在 Windows 7 中设置进程名称,这在用例中是不行的。 我建议您在启动程序之前通过动态重命名 .exe 来设置名称。 由于访问权限,在 Windows7 中动态重命名 .exe 失败。【参考方案4】:

我会创建一个 bat 文件。将此 bat 文件包装成 exe。您可以创建一个带有图标和所有内容的 exe。试试这个 bat to exe 转换器:

http://download.cnet.com/Bat-To-Exe-Converter/3000-2069_4-10555897.html

通过这种方式,您可以更好地控制。 exe的大小非常小。

编辑:另外,exe 的创建是一次性的。

【讨论】:

以上是关于支持 Windows 7 的 Java exe 启动器的主要内容,如果未能解决你的问题,请参考以下文章

安装RabbitMq-----windows

将 Java 应用程序固定到 Windows 7 任务栏

windows 7本地安装的weblogic,部署项目启动报错。

hadoop-2.7.1/bin/winutils.exe无法下载

如何在windows上配置并运行Nginx

idea64.exe启动错误:Cannot start under Java 1.7.0xxx