我正在使用Launch4J启动我的Java应用程序,如果系统上存在x64 JRE,Launch4J似乎更喜欢它。
不幸的是,我的应用程序不能在64位的JVM上运行,因为我加载的是32位的动态链接库,这是不可能的,并且会导致UnsatisfiedLinkError。
有没有办法强制/欺骗Launch4J只使用32位JVM?
发布于 2010-11-10 03:19:18
大约一年前,我遇到了这个问题,当时我使用Lauch4J包装了一个需要32位DLL的小Java程序(恰好是swt-win32.dll)。
我发现,如果安装了32位和64位JVM,Launch4J总是偏爱64位JVM。它只能在卸载64位JVM的情况下工作,这显然不是一个实用的解决方案。
我发现没有办法让Launch4J更喜欢(并要求)32位的JVM,在它的论坛上搜索了相当多的东西并发布了问题。
因此,我评估了大量可选的JRE转换器(我使用了这个列表:http://www.excelsior-usa.com/articles/java-to-exe.html)。
我最终选择了Jar2Exe,它是唯一一个具有我需要的功能的。它不是免费的,尽管有一个评估版本,而且我认为它并不昂贵。
希望这能有所帮助!
发布于 2012-09-27 21:06:24
我遇到了完全相同的问题:在64位环境中,如果同时安装了32位和64位JDK/JRE,则此工具始终检测64位版本。我已经对源代码(java + C++)打了补丁,以生成我自己的版本,并重新编译所有代码。我添加了一个复选框,强制在64位windows环境中进行32位JDK/JRE检测。只需加载版本并将其用作原始版本即可。
版本:launch4j-3.0.2-win32_Java32bitsDetection
发布于 2010-11-09 21:06:23
我不知道Launch4J,但你可以通过阅读System.getProperty("os.arch");获取有关32/64的信息。如果您遇到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);
}https://stackoverflow.com/questions/2688932
复制相似问题