Добавлять.dll на java.библиотека.путь в проекте Eclipse/PyDev Jython

Я пытаюсь использовать скомпилированный .библиотека Jar Java в моем проекте PyDev Jython.

я успешно добавил .jar к PYTHONPATH и смог начать кодирование с автоматической полной работы.

библиотека требует .расширение dll, а также,javaHeclib.dll, поэтому я добавил Это во внешний раздел Libs моего проекта.

Я могу импортировать библиотеку нормально, но я получаю ошибку, когда я пытаюсь получить доступ к любой из ее функций:

java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: no javaHeclib in java.library.path

я добавил Аргумент VM для моей конфигурации запуска, без везения:

-Djava.library.path="Y:/path/to/javaHeclib.dll;${env_var:PATH}"

Я могу запустить библиотеку из командной строки просто отлично с помощью java.library.path выше.

экспериментируя в консоли PyDev, я заметил, что могу загрузить.расширение dll с абсолютным путем, но не относительным:

>>> import java.lang
>>> java.lang.System.load('Y:/path/to/javaHeclib.dll')
>>> java.lang.System.loadLibrary('javaHeclib')
Traceback (most recent call last):
  File "<console>", line 1, in ?
java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: no javaHeclib in java.library.path

к сожалению, библиотека использует System.loadLibrary вызов выше, и у меня нет доступа к его источнику.

почему javaHeclib.dll не в моем java.library.path?

редактировать

задание java.library.path в каталог, содержащий dll, не позволил мне загрузить его с помощью System.loadLibrary.

-Djava.library.path="Y:/path/to/dll/;${env_var:PATH}"

(использование прямых косых черт не имело значения.) Я также попытался изменить args VM по умолчанию в eclipse.ini, не повезло:

-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m
-Djava.library.path="Y:pathtodll;${env_var:PATH}"

3 ответов


Я думаю, что лучший способ:

  1. создайте папку под проектом, например dll.
  2. скопировать все dll файлы в эту папку.
  3. в project - > Properties - > Java Build Path - > Source щелкните и разверните сведения об источнике.
  4. вы увидите расположение родной библиотеки, нажмите / выделите его.
  5. затем щелкните правка справа, снова щелкните рабочая область. Вы можете увидеть папку dll под проектом.
  6. выберите это и нажмите OK, OK. Вы увидите, что dll добавляется в собственное расположение библиотеки.

у меня это работает.

Для справки:

скажите, что dll вам нужно в Y:\path\to\dlls\lib\. Затем установите рабочий каталог конфигурации запуска в Y:\path\to\dlls\ и установите аргументы VM для включения -Djava.library.path=lib.

вот и все, теперь должно работать. Я не знаю, почему указание абсолютного пути в java.library.path раньше не работал, но настройка рабочего каталога, похоже, сделала это.

возможно, это что-то особенное для конкретной библиотеки, которую я используя (или что Eclipse работает с другого диска, чем библиотека)...


У меня была аналогичная проблема, но с dll сценария призрака. Даже когда последовало размещение файлов в рабочем каталоге и следовали инструкциям, это не сработало для меня, обратитесь к тегу Ghost4J. Ява.ленг.UnsatisfiedLinkError: не удалось загрузить библиотеку 'gsdll64' и использовал-Djna.библиотека.путь, чтобы заставить его работать.