[英]Configure Launch4J to use 32-bit JVM only
我正在使用Launch4J来启动我的Java应用程序,如果系统上存在x64 JRE,则Launch4J似乎更喜欢它。
不幸的是我的应用程序无法在64位JVM上运行,因为我正在加载32位DLL,这是不可能的,并导致UnsatisfiedLinkError。
有没有办法强制/欺骗Launch4J只使用32位JVM?
我有完全相同的问题:如果安装了32位64位JDK / JRE,则进入64位环境,此工具始终检测64位版本。 我修补了源代码(java + C ++)代码来制作我自己的版本并重新编译所有代码。 我添加了一个复选框,将32位JDK / JRE检测强制转换为64位窗口环境。 只需下载该版本并将其用作原始版本。
大约一年前我遇到了这个问题,使用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,这是唯一一个拥有我需要的功能的人。 它不是免费的,虽然有一个评估版本,我认为它并不昂贵。
希望这可以帮助!
我前段时间遇到了同样的问题并分叉了项目,因此用户界面公开了一个强制应该找到32位JVM的选项,你可以使用以下补丁获取launch4j 3.0.3的安装程序:
http://fbergmann.github.io/launch4j/files/SetupLaunch4j_3.0.3.exe
并在这里阅读更多:
http://frank-fbergmann.blogspot.de/2012/11/launch4j-for-32bit.html
http://fbergmann.github.io/launch4j/
我不知道Launch4J,但你可以通过阅读System.getProperty("os.arch");
获得有关32/64的信息System.getProperty("os.arch");
。 如果遇到64位系统,可以使用一条好消息退出安装程序,告诉用户安装32位JVM。
您可以使用包装器包装startUp-Code以向用户显示消息框。
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);
}
如果您不介意在您的应用程序中包含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
要么
-D32 -Djava.home=%ProgramFiles(x86)%\Java\JREDIR -Djava.ext.dirs=%ProgramFiles(x86)%\Java\JREDIR\lib\ext
对于像Areca这样受到攻击的Launch4j应用程序的任何用户,并且需要快速解决,请查看启动应用程序的目录,您将找到一个完整的java命令行来在名为launch4j的文件中运行程序。记录 。 只需使用您喜欢的java vm创建一个bat文件或脚本,然后使用日志中的完整命令行运行它。
配置时必须添加JVM参数。
它在下面的帖子中显示了如何添加它:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.