Как добавить нативную библиотеку в «java.library.path» с запуском Eclipse (вместо того, чтобы переопределить ее)

StackOverflow https://stackoverflow.com/questions/661320

Вопрос

Я получил нативную библиотеку, которую нужно добавить в java.library.path. Анкет С аргументом JVM -Djava.library.path = path ... Я могу установить путь так, как хочу.

Моя проблема заключается в том, что моя другая библиотека (отчетность Pentaho) ищет шрифты на основе по умолчанию java.library.path (включая системные каталоги и т. Д.) И ручная настройка переопределяет путь по умолчанию ..

Итак: как я могу добавлять вход в путь к по умолчанию java.library.path вместо переопределения его (что, кажется, сделано с -djava.library.path)? (Я не хотел бы добавлять путь по умолчанию вручную, что было бы не очень хорошо ради развертывания)

РЕДАКТИРОВАТЬ: Извините за пропущенные данные; Я работаю с Eclipse. (Развертывание выполнено с помощью JNLP, и я могу использовать Нативельб под Ресурсы)

Это было полезно?

Решение

Забыл эту проблему ... Я на самом деле спрашивал с Eclipse, извините за то, что не заявил об этом изначально. И ответ кажется слишком простым (по крайней мере, с 3,5; вероятно, с более старыми версиями):

Аргументы конфигурации Java Run: Аргументы VM:

-Djava.library.path="${workspace_loc:project}\lib;${env_var:PATH}"

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

Другие советы

Если вы хотите добавить нативную библиотеку, не мешая java.library.path во время разработки в Eclipse (чтобы не включать абсолютные пути и необходимость добавления параметров в конфигурацию вашего запуска), вы можете предоставить путь к месту местного библиотеки для каждой банки в Джава строить путь Диалог под Место нативного библиотеки. Анкет Обратите внимание, что имя файла нативного библиотеки должно соответствовать имени файла JAR. Смотрите также это Подробное описание.

SWT помещает необходимые нативные DLL в банку. Поиск "org.eclipse.swt.win32.win32.x86_3.4.1.v3449c.jar" для примера.

DLL должны быть в корне банки, банка должна быть подписана, и DLL должен появляться с контрольной суммой в мета-инф/manifest.mf для виртуальной машины, чтобы забрать их.

В окнах, как это:

-Djava.library.path = "c:/mylibpath;%path%"

% Path% -ваш старый -джава.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=102239 Утверждается, что в запусках Eclipse механики замены, по крайней мере, нет, чтобы выпустить Juno.

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

Я написал почти, потому что должно быть возможно позволить запуск Eclipse, сбросить содержание java.library.path и остановить Eclipse в одной команде. Дамп будет проанализирован, а затем будет сделан в качестве ввода для запуска Eclipse, т.е.

#!/bin/bash
# get default value of java.library.path (somehow)
default_lib_path=$( start_dump_stop_eclipse_somehow )  

# now launch Eclipse
eclipse --launcher.appendVmargs \
         -vmargs \
         -Djava.library.path="/my/native/lib/folder:${default_lib_path}"

Можете ли вы получить это, позвонив System.Load () программно загружать свою собственную библиотеку? Этот метод (в отличие от System.loadlibrary ()) позволяет указать абсолютный путь.

В системах UNIX вы можете добавить к переменной среды LD_Library_Path. В Windows JVM автоматически устанавливает свойство системы, java.library.path, на путь; Так что, если DLL находится на вашем пути, то вы настроены.

Window->Preferences->Java->Installed JREs. Then choose your current JRE(JDK) and click Edit. Fill Default VM Arguments: -Djava.library.path=/usr/local/xuggler/lib. Done!

The solution offered by Rob Elsner in one of the comments above works perfectly (OSX 10.9, Eclipse Kepler). One has to append their additional paths to that separated by ":".

You could also use ${system_property:java.library.path} – Rob Elsner Nov 22 '10 at 23:01

The native library file name has to correspond to the Jar file name. This is very very important. Please make sure that jar name and dll name are same. Also,please see the post from Fabian Steeg My download for jawin was containing different names for dll and jar. It was jawin.jar and jawind.dll, note extra 'd' in dll file name. I simply renamed it to jawin.dll and set it as a native library in eclipse as mentioned in post "http://www.eclipsezone.com/eclipse/forums/t49342.html"

For some reason I couldn't get multiple folders to work (well it did for a while but as soon as I needed more dlls and added more folders, none with white spaces in the path). I then copied all needed dlls to one folder and had that as my java.library.path and it worked. I don't have an explanation - if anyone does, it would be great.

Many of the existing answers assume you want to set this for a particular project, but I needed to set it for Eclipse itself in order to support integrated authentication for the SQL Server JDBC driver.

To do this, I followed these instructions for launching Eclipse from the Java commandline instead of its normal launcher. Then I just modified that script to add my -Djava.library.path argument to the Java commandline.

On Windows, I have found that the important thing is to start Eclipse from the command line rather than from the Start Menu or a shortcut, provided that the native DLL is in a directory in your PATH. Apparently, this ensures that the proper directory is on the path.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top