Java loadLibrary() не може да намери библиотека след превключване от 64-битов jdk на 32-битов

Опитвам се да заредя собствена библиотека, която съответно зарежда оригинална dll. Въпреки това на друг компютър, работещ с XP 32bit, работи добре. Когато се изпълнява на 64-битова система win7, няма да успее да се зареди. На машината с xp dll файловете може да са в същата директория като файловете на класа, но за да не получа грешка при неудовлетворена връзка, трябваше да копирам файловете в папката system32. След това даде грешка, че 32-битова dll не може да бъде заредена на 64-битов процес. Изтеглих 32-битовия jdk и зададох jdk в проекта за зареждане на 32-битовия jdk. Когато това приключи, отново получих грешка Неудовлетворена връзка и файловете все още са в system32, както и до файловете на класа. Объркан съм защо ще намери библиотеката, когато използва 64-битов jdk и няма да намери в 32-битов jdk.

...
static {
    System.loadLibrary("K8055jni");
}

Exception in thread "main" java.lang.UnsatisfiedLinkError: no K8055jni in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at K8055jni.<clinit>(K8055jni.java:50)
at Test.main(Test.java:4)

Как да накарам 32-битовия jdk да намери същите файлове?


person Crackingthecode    schedule 06.09.2012    source източник
comment
опитахте ли да настроите java.library.path да включва или локалната директория, или system32?   -  person jtahlborn    schedule 06.09.2012


Отговори (1)


АКО разбирам въпроса и проблема ви правилно, можете да опитате едно от следните:

  1. Windows 7 поставете вашите 32-битови DLL файлове в \Windows\SysWOW64 вместо в \Windows\System32. Колкото и да е странно, под Win 7 System32 е само за 64-битови двоични файлове. Вижте това и това за подробности.

  2. Още по-добре, поставете вашите двоични файлове в папка на приложението и посочете в командния ред на java:

    -Djava.library.path=<path-to-dll-lib>

person Richard Sitze    schedule 06.09.2012
comment
Благодаря за помощта. Първият вариант проработи от първия опит. Има смисъл защо не може да намери файла. - person Crackingthecode; 07.09.2012