Java 将Launch4J配置为仅使用32位JVM

Java 将Launch4J配置为仅使用32位JVM,java,64-bit,launch4j,Java,64 Bit,Launch4j,我正在使用Launch4J启动我的Java应用程序,如果系统上有x64jre,Launch4J似乎更喜欢它 不幸的是,我的应用程序无法在64位JVM上运行,因为我正在加载一个32位DLL,这是不可能的,并且会导致一个不满意的链接错误 有没有办法强制/欺骗Launch4J只使用32位JVM 我不知道Launch4J,但是您可以通过阅读System.getProperty(“os.arch”)。如果您遇到64位系统,您可以退出安装程序,并给出一条好消息,告诉用户安装32位JVM 您可以使用包装器包装

我正在使用Launch4J启动我的Java应用程序,如果系统上有x64jre,Launch4J似乎更喜欢它

不幸的是,我的应用程序无法在64位JVM上运行,因为我正在加载一个32位DLL,这是不可能的,并且会导致一个不满意的链接错误


有没有办法强制/欺骗Launch4J只使用32位JVM

我不知道Launch4J,但是您可以通过阅读
System.getProperty(“os.arch”)。如果您遇到64位系统,您可以退出安装程序,并给出一条好消息,告诉用户安装32位JVM

您可以使用包装器包装启动代码,以便向用户显示消息框

public static void main(String[] args]){

   String architecture = System.getProperty("os.arch");
   // Did not test the return value of this property,,but should work
   if("64".equals(architecture)){
       // Show a dialog, or print a logmessage
       System.exit(-1);
   }
   // Start my APP
   com.something.startup.main(args);
}

大约一年前,我遇到了这个问题,使用Lauch4J包装了一个需要32位DLL(swt-win32.DLL)的小型Java程序

我发现,如果安装了32位和64位JVM,Launch4J将始终支持64位JVM。它只有在卸载64位JVM时才能工作,这显然不是一个实用的解决方案

在搜索了很多内容并在论坛上发布了问题之后,我发现没有办法让Launch4J更喜欢(并且需要)32位JVM

因此,我评估了大量可供选择的JRE转换器(我使用了以下列表:)

我最终选择了Jar2Exe,它是唯一一款具备我所需功能的产品。它不是免费的,虽然有一个评估版本,我认为它并不昂贵


希望这有帮助

配置时必须添加JVM参数

下面的帖子显示了如何添加它:


如果您不介意在应用程序中包含JDK副本,请尝试将这些参数(在MyApp.ini中)传递到launch4j:

-D32 -Djava.home=d:\MyApp\JDK32 -Djava.ext.dirs=d:\MyApp\JDK32\jre\lib\ext 
这里还有其他一些你可以使用的东西:

如果不打包JRE,可以将Launch4j选项设置为使用“jreOnly”,然后使用名为“%ProgramFiles%”的DOS环境变量在预期位置定位32位或64位JRE,具体取决于使用的是SysWOW64 32位cmd.exe shell还是常规64位shell。然后可以将这些选项传递给JVM:

-D32 -Djava.home=%ProgramFiles%\Java\JREDIR -Djava.ext.dirs=%ProgramFiles%\Java\JREDIR\lib\ext 


我有完全相同的问题:在64位环境中,如果同时安装了32个ans和64位JDK/JRE,则此工具始终检测64位版本。 我已经修补了源代码(java+C++),以生成自己的版本并重新编译所有代码。我添加了一个复选框,将32位JDK/JRE检测强制到64位windows环境中。 只需加载版本并将其用作原始版本


版本:

我不久前遇到了同样的问题,并完成了该项目,因此用户界面公开了一个选项,强制找到32位JVM,您可以从以下位置获取launch4j 3.0.3的安装程序和修补程序:

请在此处阅读更多内容:



对于像Areca这样的Launch4j应用程序的任何用户,如果他们被这个应用程序刺痛,并且需要快速解决,请查看启动应用程序的目录,您将在名为Launch4j.log的文件中找到一个完整的java命令行来运行您的程序。只需使用您喜欢的JavaVM创建一个bat文件或脚本,并在日志中使用完整的命令行运行它

这是一个老问题,Launch4J在被问到后已被更新。现在有了一个专用的用户界面控件来选择更喜欢哪个版本的JVM。 目前的选择是:

  • 仅64位
  • 先是64位,然后是32位
  • 先是32位,然后是64位
  • 仅32位
最后一个,当然,正是OP所要求的


据我所知,早期版本的JVM支持此选项-D32,但没有针对JavaSE6的文档记录,并且似乎不起作用。但是,让我们知道它是否适合您!“抱歉,您在此博客中查找的页面不存在。”。请避免使用仅链接的答案…时间快到2012年了,2011年2月似乎有更新,在阅读留言板后,这个问题似乎仍未得到解决。如果您将Launch4j指向SYSWOW64目录中的32位windows cmd.exe shell,则无法从该shell运行64位JVM。只是一个想法……这是一个很好的建议,但建议
“os.arch”
返回不一致的结果。不过,我认为这实际上并没有解决最初的问题。谢谢,伙计,这是本页迄今为止最好的解决方案!干得好。。。你有没有考虑将你的补丁提交给Actuk4J开发者?他们对此有一个公开的问题:感谢Jar2Exe的提示,这对我的公司来说是完美的。
-D32 -Djava.home=%ProgramFiles(x86)%\Java\JREDIR -Djava.ext.dirs=%ProgramFiles(x86)%\Java\JREDIR\lib\ext