2012-05-22 2 views
0

У меня возникла проблема с загрузкой простой .dll через java's System.loadLibrary ("name.dll"); У меня есть одна копия dll в C: \ libraries \ name.dll, а также другая копия в папке system32. Обратите внимание, что C: \ libraries не входит в переменную среды пути. По какой-то причине, когда я называю System.loadLibrary («name.dll»), я получаю:System.loadLibrary() дает java.lang.UnsatisfiedLinkerError: не удается загрузить библиотеку

java.lang.UnsatisfiedLinkError: Can't load library: C:\libraries\name.dll 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1706) 
    at java.lang.Runtime.load0(Runtime.java:770) 
    at java.lang.System.load(System.java:1003) 

Даже после того, как я удалил name.dll из C: \ библиотеки, я все еще получаю эту же ошибку , Есть ли причина, по которой System.load находит .dll в месте, которое не находится в пути, и почему оно все еще выглядит в этом месте даже после удаления файла?

+0

dll должно быть в вашем пути к классам для загрузки. –

+0

Является ли это dll COM? Может ли он быть зарегистрирован regsvr32? – Motes

+0

Имеет ли 'name.dll' какие-либо зависимые dll? Является ли процесс Java запущенным в 'C: \ libraries'? – hmjd

ответ

1

Вам необходимо изменить -Djava.library.path, чтобы указать на system32 вместо C: \ libraries.

+0

Дайте ему только имя библиотеки и убедитесь, что она находится в пути, включенном в -Djava.library.path в командной строке – Miquel

Смежные вопросы