最近在项目中遇到一个问题,工程代码默认是用64位JRE执行的,但有个需求需要用到32位dll库,于是直接通过
System.loadLibrary 去加载该库,发现一直卡在这里,不继续往下走了,也没抛任何异常。于是写了个demo,发现抛出了 UnstatisfiedLinkError Can't load IA 32-bit .dll on a AMD 64-bit platform,然后一目了然,意思是说 无法在64位平台上加载32位,然后去本地环境的 jre/bin 目录执行了 java -version,发现果然是64位,于是在代码里面通过32位JRE去加载dll库,代码如下:
String javaPath = "/system/jre32/bin/java";
List<String> commands = new ArrayList<>();
commands.add(javaPath);
String str = LIB_PATH + ";test.jar"; // jar包的路径
commands.add("-cp"); // 可以去看下 java -cp 命令的用法
commands.add(str);
commands.add("com.leon.demo.Main");
commands.add("arg1"); // 传给Main类的参数1
commands.add("arg2"); // 传给Main类的参数2,还可以继续添加参数
ProcessBuilder processBuilder &