java-无法在AMD 64位平台上加载IA 32位.dll
我正在尝试通过此页面上的JNI包装器使用Java中的SVMLight:
static {
System.loadLibrary("lib/JNI_SVM-light-6.01/lib/svmlight");
}
我收到以下错误:
... lib \ JNI_SVM-light-6.01 \ lib \ svmlight.dll:无法加载IA 32位.dll 在AMD 64位平台上
我可以通过重新编译64位.dll来解决此问题吗? 我将如何去做呢? 我可以使用其他解决方法吗? SVMLight使C源代码可用。
14个解决方案
70 votes
是的,您必须重新编译64位DLL。 您唯一的其他选择是切换到32位JVM,或者获取一些32位进程来代表您加载DLL并以某种方式与该进程进行通信。
Daniel Pryden answered 2020-01-28T03:44:44Z
4 votes
我使用最初打算在Win XP上运行的使用tibco dll的Java应用程序遇到了相同的问题。 为了使其能够在Windows 7上运行,我将该应用程序指向了32位JRE。 等待查看是否还有其他解决方案。
aditya answered 2020-01-28T03:45:04Z
2 votes
对第一个问题的简短回答:是的。
更长的答案:也许吧; 这取决于SVMLight的构建过程是否在64位Windows上正常运行。
最后说明:对System.loadLibrary的调用很愚蠢。 请使用完整路径名调用System.load或让它搜索java.library.path。
bmargulies answered 2020-01-28T03:45:33Z
1 votes
在win64bit和JVM 64bit中出现了相同的问题
通过将dll上传到system32解决了
Yaro answered 2020-01-28T03:45:57Z
1 votes
确保将PATH设置为Program Files(x86),而不是Program Files。 那解决了我的问题。
Wojciechu answered 2020-01-28T03:46:17Z
1 votes
从-[http://blog.cedarsoft.com/2010/11/setting-java-library-path-programmatically/]获得了
如果设置了java.library.path,则需要具有以下几行才能起作用。
Field fieldSysPath;
fieldSysPath = ClassLoader.class.getDeclaredField( "sys_paths" );
fieldSysPath.setAccessible( true );
fieldSysPath.set( null, null );
Vincent Tan answered 2020-01-28T03:46:41Z
1 votes
去
项目属性>>运行>> VM选项
并把这个地址:
-Djava.library.path="C:\opencv\build\java\x64"
eng_hish answered 2020-01-28T03:47:10Z
1 votes
只需去安装下载jdk_x86 并将其安装在Program Files(x86)中,并在项目中设置jre路径。 而已。
JoboFive answered 2020-01-28T03:47:30Z
0 votes
我在以前在Windows x32下运行的Windows x64上运行red5(tomcat)时遇到问题,出现下一个错误:
INFO pool-15-thread-1 com.home.launcher.CommandLauncher - Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\....\lib\Data Samolet.dll: Can't find dependent libraries
INFO pool-15-thread-1 com.home.launcher.CommandLauncher - at java.lang.ClassLoader$NativeLibrary.load(Native Method)
当我安装Java x32版本并设置下一个时解决了问题
“环境变量”
“家庭用户变量”
JAVA_HOME => C:\ Program文件(x86)\ Java \ jdk.1.6.0_45
“系统变量”
路径[开头] => C:\ Program Files \ Java \ jdk.1.8.0_60;。
Denys Zotov answered 2020-01-28T03:48:16Z
0 votes
我有与此相关的问题,正在阅读
"Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\opencv\build\java\x86\opencv_java2413.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform "and it took me an entire night to figure out.
我通过将C:\opencv\build\java\x64中的dll复制到system32文件夹中解决了我的问题。 我希望这会对某人有所帮助。
Oti answered 2020-01-28T03:48:40Z
0 votes
这是从命令行/命令提示符进行编译的人的答案。 不需要更改您的1.8.0_111环境变量; 它只是使您可以将32位JVM与32位DLL一起用于程序。
对于编译,使用哪个1.8.0_111无关紧要-32位或64位。
>javac MyProgramWith32BitNativeLib.java
对于程序的实际执行,重要的是指定1.8.0_111的32位版本的路径
我将发布一个1.8.0_111的代码示例,因为这似乎是OP使用的操作系统。
视窗
该代码很可能是这样的:
>"C:\Program Files (x86)\Java\jre#.#.#_###\bin\java.exe" MyProgramWith32BitNativeLib
区别在于1.8.0_111之后的数字。要查找应使用的数字,请输入:
>dir "C:\Program Files (x86)\Java\"
在我的机器上,过程如下
C:\Users\me\MyProject>dir "C:\Program Files (x86)\Java"
Volume in drive C is Windows
Volume Serial Number is 0000-9999
Directory of C:\Program Files (x86)\Java
11/03/2016 09:07 PM
11/03/2016 09:07 PM
11/03/2016 09:07 PM
0 File(s) 0 bytes
3 Dir(s) 107,641,901,056 bytes free
C:\Users\me\MyProject>
所以我知道我的电话号码是1.8.0_111,我的命令是
C:\Users\me\MyProject>"C:\Program Files (x86)\Java\jre1.8.0_111\bin\java.exe" MyProgramWith32BitNativeLib
bballdave025 answered 2020-01-28T03:49:36Z
0 votes
不用担心,您应该将本机库中的.dll从x64更改为x86。
例如:-您可能已经选择了此(C:\ opencv \ build \ java \ x64)。
而是为本机库(C:\ opencv \ build \ java \ x86)选择此选项。
Akash answered 2020-01-28T03:50:04Z
0 votes
对于本机库位置,请在X86上使用X64。 至少我有这个固定的问题。
이재찬 answered 2020-01-28T03:50:24Z
0 votes
我的Windows笔记本电脑同时具有32位和64位客户端,我突然遇到了所有问题,然后重新排列了路径变量,如下所示
之前:
C:\app\oracle64\product\12.1.0\client_1\bin;
C:\app\oracle32\product\12.1.0\client_1\bin;
后:
C:\app\oracle32\product\12.1.0\client_1\bin;
C:\app\oracle64\product\12.1.0\client_1\bin;
开始工作...希望对大家有帮助。
Nagesh Kothakota answered 2020-01-28T03:50:57Z