Не удается загрузить 32-разрядную библиотеку IA на 64-разрядной платформе AMD. - PullRequest
49 голосов
/ 13 ноября 2011

Я пытаюсь использовать SVMLight из Java с использованием оболочки JNI на этой странице :

  static {
    System.loadLibrary("lib/JNI_SVM-light-6.01/lib/svmlight");
  }

Я получаю следующую ошибку:

... lib \ JNI_SVM-light-6.01 \ lib \ svmlight.dll: Не удается загрузить 32-битный DLL-файл IA на 64-битной платформе AMD

МожетЯ решаю это путем перекомпиляции .dll для 64-разрядных? Как бы я поступил так? Есть ли какой-нибудь другой обходной путь, который я могу использовать?SVMLight делает доступным исходный код на языке C.

Ответы [ 14 ]

0 голосов
/ 16 мая 2018

Просто зайдите, чтобы установить загрузку jdk_x86 и установить ее в Program Files (x86) и установить путь jre в своем проекте.Вот и все.

0 голосов
/ 16 ноября 2016

Вот ответ для тех, кто компилирует из командной строки / командной строки.Не требует изменения вашей переменной окружения Path;он просто позволяет использовать 32-битную JVM для программы с 32-битной DLL.

. Для компиляции не должно иметь значения, какой javac используется - 32-битный или64-битный.

>javac MyProgramWith32BitNativeLib.java

Для реального выполнения программы важно указать путь к 32-битной версии java.exe

Я выложупример кода для Windows, поскольку, похоже, это ОС, используемая OP.

Windows

Скорее всего, код будет выглядеть примерно так:

>"C:\Program Files (x86)\Java\jre#.#.#_###\bin\java.exe" MyProgramWith32BitNativeLib 

Разница будет в числах после jre.Чтобы узнать, какие номера вы должны использовать, введите:

>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    <DIR>          .
11/03/2016  09:07 PM    <DIR>          ..
11/03/2016  09:07 PM    <DIR>          jre1.8.0_111
               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
0 голосов
/ 23 сентября 2016

У меня была проблема, связанная с этим, и я читал

"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.

Я решил свою проблему, скопировав DLL в C:\opencv\build\java\x64 в папку system32.Надеюсь, это кому-нибудь поможет.

0 голосов
/ 16 октября 2015

У меня возникла проблема при запуске red5 (tomcat) в Windows x64, которая ранее работала в Windows x32, возникла следующая ошибка:

 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 Files (x86) \ Java \ jdk.1.6.0_45

"Системные переменные"

Путь [в начале] => C: \ Program Files \ Java \ jdk.1.8.0_60; ..

...