1

我最近是 Java 7 update 21 JDK,我用 netbeans 创建了 java 应用程序。为了分发我的 jar,我使用 Exe4j 4.5.2 Jar 到 exe。

现在,当我使用 Exe4j 时,它会创建 exe,但是当我执行它时,它会显示错误消息。

“无法启动 JVM。最大堆大小 (-Xmx) 可能太大,或者防病毒或防火墙工具可能会阻止执行。”

经过几次测试后,我发现我以前(在安装 JDK7u21 之前)从 exe4j 工作的应用程序 exe 文件现在也给出了相同的错误消息。

(我使用的是 64 位版本的 JDK 和 EXE4j,但编译的 exe 是 32 位的。我想要 32 位应用程序)

4

1 回答 1

3

Exe4j 通过加载目标 JVM 的 DLL 来工作,这要求 JVM 与可执行包装器具有相同的“位数”。所以一个 32 位的 Exe4j 包装器只能加载一个 32 位的 JVM,而一个 64 位的包装器只能加载一个 64 位的 JVM。

当 Exe4j 在注册表中搜索 JVM 时,它将忽略任何错误位数的 JVM,而仅查看其自己的位数。但是,如果您通过设置 EXE4J_JAVA_HOME 环境变量来强制 Exe4j 加载特定的 JVM,并且位数不匹配,则 JVM 的加载将失败。

如果您需要 32 位应用程序(即可执行包装器),则必须安装 32 位 JRE 或 JDK。另一方面,如果您希望使用 64 位 JVM,则必须提供 64 位可执行包装器。

于 2013-08-07T18:16:26.943 回答