Java EXE4j Jar到exe错误

Java EXE4j Jar到exe错误,java,jar,jvm,heap,exe4j,Java,Jar,Jvm,Heap,Exe4j,我最近正在使用Java7Update21JDK,我用netbeans创建了Java应用程序 为了分发我的jar,我使用EXE4J4.5.2JAR到exe 现在,当我使用Exe4j时,它会创建exe,但当我执行它时,它会显示错误消息 “无法启动JVM。最大堆大小(-Xmx)可能太大,或者防病毒或防火墙工具可能会阻止执行。” 经过几次测试后,我发现我以前(在安装JDK7u21之前)在exe4j中工作的应用程序exe文件现在也给出了相同的错误消息 (我正在使用JDK和EXE4j的64位版本,但exe是

我最近正在使用Java7Update21JDK,我用netbeans创建了Java应用程序 为了分发我的jar,我使用EXE4J4.5.2JAR到exe

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

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

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


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

EXE4j通过加载目标JVM的DLL来工作,这要求JVM与可执行文件包装器具有相同的“位”。因此,32位Exe4j包装器只能加载32位JVM,而64位包装器只能加载64位JVM

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


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

如果最大堆大小超过3gb或可用系统内存,则会收到此错误。您未能告诉我们您正在使用的设置这与可用内存错误无关。这是因为未安装32位JRE。说得对,Windows保留1gb内存,但32位进程最多只能访问4gb。32位进程在Windows计算机中无法访问超过3gb的数据,这两种方式都可以。64位和32位。哪个版本最适合使用?您可以同时提供这两个版本,并让用户决定使用哪个版本:如果您只想提供一个版本,考虑到64位版本在较旧的32位计算机上不起作用,我建议提供32位版本。谢谢您的建议