2012-01-28 4 views
4

Чтобы импортировать библиотеки DLL в проект Eclipse, Java, я проверил "java.library.path"Импорт DLL в проект Eclipse, Java

String path = System.getProperty("java.library.path"); 
System.out.println(path); 

Одним из path значений был равен C:/Windows/System32. Поэтому я сохранил myAPI.dll в C:/Windows/System32. Тогда я назвал System.loadLibrary:

System.loadLibrary("myAPI.dll"); 

И получил сообщение об ошибке:

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Expecting an absolute path of the library: myAPI.dll 
    at java.lang.Runtime.load0(Unknown Source) 
    at java.lang.System.load(Unknown Source) 

Кстати, я пытался поставить мой файл DLL в различных других каталогах, был упомянут в path. Но каждый раз я получал такое же сообщение об ошибке. Как решить эту проблему?

+2

ли вы имеете в виду 'system32'? – cha0site

+0

http://stackoverflow.com/questions/4691095/java-loading-dlls-by-a-relative-path-and-hide-them-inside-a-jar –

+1

Я нашел решение: System.loadLibrary ("myAPI «); вместо System.loadLibrary ("myAPI.dll"); –

ответ

5

Не помещайте «.dll» в конец своей библиотеки. Это расширение для Windows, и ваш вызов будет работать в других системах с другими расширениями, поэтому установка расширения на него неверна. Просто загрузите «myAPI», и если это правильные имена и другие вещи, как рекламируются, они будут работать.

1

Один из вариантов заключается в попытке держать эту DLL в файле/JRE/бункером, используемой в системной библиотеке затмение и был в состоянии настроить DLL-файлы во время выполнения, помещая DLL в/JRE/бен

Это самый простой способ я мог узнать. Эта работа для me.Hopefully поможет :)

+0

это не работает для меня. другая идея? – ralphgabb

0

Если DLL находится в папке проекта (например, часть вашего проекта), а именно:.

./prod/bin/myAPI.dll 

и вы хотите выполнить программу/блок test в eclipse вы можете настроить среду выполнения, которая запускает вашу программу. Перейдите в раздел «Предпочтения/Java/Установленные JRE», выберите нужную JRE или JDK (обратите внимание: для загрузки 32-разрядной DLL вы должны использовать 32-битную JRE, хотя ваша хост-система - 64-битная система), нажмите «Изменить». В поле «По умолчанию VM аргументы» вы вводите

-Djava.library.path="./prod/bin;${env_var:PATH}" 

Это добавляет вашу папка длл «лезвие/БИН» в передней части системного пути (не беспокойтесь, это не навсегда, только для окружающей среды, избранных JRE).

Выполнив следующий код вы можете убедиться, что путь система была обновлена, а длл может быть загружен:

 String path = System.getProperty("java.library.path"); 
     System.out.println(path); 
     System.loadLibrary("myAPI");