Java 将Launch4J配置为仅使用32位JVM
我正在使用Launch4J启动我的Java应用程序,如果系统上有x64jre,Launch4J似乎更喜欢它 不幸的是,我的应用程序无法在64位JVM上运行,因为我正在加载一个32位DLL,这是不可能的,并且会导致一个不满意的链接错误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只使用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