我最近是Java 7更新21 JDK,我用netbeans创建了Java应用程序
为了分发我的jar,我使用Exe4j 4.5.2 Jar来执行。
现在,当我使用Exe4j时,它会创建exe,但是当我执行它时,它会向我显示错误消息。
“无法启动JVM。最大堆大小(-Xmx)可能太大,或者防病毒或防火墙工具可能阻止执行。”
经过几次测试后,我发现我以前(在安装JDK7u21之前)从exe4j运行的应用程序exe文件现在也给出了相同的错误消息。
(我使用的是64位版本的JDK和EXE4j,但是编译的exe是32位。我想要32位应用程序)
最佳答案
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位可执行文件包装器。