我最近是Java 7更新21 JDK,我用netbeans创建了java应用程序 为了分发我的jar我使用Exe4j 4.5.2 Jar to exe。
现在,当我使用Exe4j时,它会创建exe,但是当我执行它时,它会显示错误消息。
“无法启动JVM。最大堆大小(-Xmx)可能太大,或者防病毒或防火墙工具可能会阻止执行。”
经过几次测试后我发现我以前(在安装JDK7u21之前)exe4j的工作应用程序exe文件现在也给出了同样的错误信息。
(我使用64位版本的JDK和EXE4j但是编译的exe是32位。我想要32位应用程序)
答案 0 :(得分:2)
Exe4j通过加载目标JVM的DLL来工作,这需要JVM与可执行包装器具有相同的“位”性。因此,32位Exe4j包装器只能加载32位JVM,而64位包装器只能加载64位JVM。
当Exe4j在注册表中搜索JVM时,它会忽略任何错误位的JVM,并且只能查看它自己的位数。但是,如果通过设置EXE4J_JAVA_HOME环境变量并且位数不匹配来强制Exe4j加载特定JVM,则JVM的加载将失败。
如果需要32位应用程序(即可执行的wrrapper),则必须安装32位JRE或JDK。另一方面,如果要使用64位JVM,则必须提供64位可执行包装。