У меня есть собственная библиотека, которую нужно добавить в java.library.path . С аргументом JVM -Djava.library.path = path ... я могу установить путь по своему усмотрению .
Моя проблема в том, что другая моя библиотека (отчеты pentaho) выполняет поиск шрифтов на основе java.library.path по умолчанию (включая системные каталоги и т.д.), а ручная настройка отменяет путь по умолчанию.
Итак: как я могу добавить запись пути в java.library.path по умолчанию вместо того, чтобы переопределить ее (что, похоже, делается с помощью -Djava.library.path)? (Я бы не хотел вручную добавлять путь по умолчанию, что было бы нехорошо для развертывания)
РЕДАКТИРОВАТЬ: извините за недостающие детали; Я работаю с Eclipse. (Развертывание выполняется с помощью JNLP, и там я могу использовать nativelib под ресурсами )
Ответы:
Забыл об этой проблеме ... Я действительно спрашивал с Eclipse, извините, что не сказал об этом изначально. И ответ кажется слишком простым (по крайней мере, с 3.5; возможно, и со старыми версиями):
Аргументы конфигурации запуска Java: Аргументы виртуальной машины:
-Djava.library.path="${workspace_loc:project}\lib;${env_var:PATH}"
Не забывайте кавычки, иначе возникнут проблемы с пробелами в PATH.
источник
Если вы хотите добавить собственную библиотеку без вмешательства
java.library.path
во время разработки в Eclipse (чтобы избежать включения абсолютных путей и необходимости добавлять параметры в конфигурацию запуска), вы можете указать путь к расположению собственных библиотек для каждого Jar в сборке Java. Диалоговое окно « Путь » в разделе « Местоположение собственной библиотеки» . Обратите внимание, что имя файла собственной библиотеки должно соответствовать имени файла Jar. См. Также это подробное описание .источник
java.library.path
и вернулся после того, как нашел решение в другом месте. Отредактирую свой ответ, чтобы было понятнее.SWT помещает необходимые библиотеки DLL в JAR. Найдите пример по запросу "org.eclipse.swt.win32.win32.x86_3.4.1.v3449c.jar".
Библиотеки DLL должны находиться в корне JAR, JAR должен быть подписан, а DLL должна отображаться с контрольной суммой в файле META-INF / MANIFEST.MF, чтобы виртуальная машина могла их забрать.
источник
java.library.path
. Вы предлагаете только поиск корняjar
?В Windows вот так:
-Djava.library.path = "C: / MyLibPath;% PATH%"
% PATH% - это ваш старый -Djava.library.path
источник
Можно ли обойти это, вызвав программно System.load () для загрузки собственной библиотеки? Этот метод (в отличие от System.loadLibrary () ) позволяет указать абсолютный путь.
источник
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}"
источник
В системах UNIX вы можете добавить к переменной среды LD_LIBRARY_PATH. В Windows JVM автоматически устанавливает для системного свойства java.library.path значение PATH; поэтому, если dll находится в вашем PATH, тогда все готово.
источник
Окно-> Настройки-> Java-> Установленные JRE. Затем выберите текущую JRE (JDK) и нажмите «Изменить». Заполните параметры виртуальной машины по умолчанию: -Djava.library.path = / usr / local / xuggler / lib. Выполнено!
источник
Решение, предложенное Робом Элснером в одном из приведенных выше комментариев, работает отлично (OSX 10.9, Eclipse Kepler). Нужно добавить их дополнительные пути к разделенным «:».
источник
Имя файла собственной библиотеки должно соответствовать имени файла Jar. Это очень важно. Убедитесь, что имя jar и имя dll совпадают. Также см. Сообщение Фабиана Стига. Моя загрузка для jawin содержала разные имена для dll и jar. Это были jawin.jar и jawin d .dll, обратите внимание на дополнительную букву d в имени файла dll. Я просто переименовал его в jawin.dll и установил его как собственную библиотеку в eclipse, как указано в сообщении " http://www.eclipsezone.com/eclipse/forums/t49342.html "
источник
По какой-то причине я не мог заставить работать несколько папок (ну, какое-то время это было, но как только мне понадобилось больше dll и добавлено больше папок, ни одной с пробелами в пути). Затем я скопировал все необходимые библиотеки DLL в одну папку и использовал это как свой java.library.path, и это сработало. У меня нет объяснения - если у кого-то есть, было бы здорово.
источник
Многие из существующих ответов предполагают, что вы хотите установить это для конкретного проекта, но мне нужно было установить его для самого Eclipse , чтобы поддерживать интегрированную аутентификацию для драйвера JDBC SQL Server.
Для этого я выполнил эти инструкции по запуску Eclipse из командной строки Java вместо его обычного средства запуска. Затем я просто изменил этот сценарий, чтобы добавить аргумент -Djava.library.path в командную строку Java.
источник
java.library.path
инициализируется значениями указанных выше переменных на соответствующей платформе.Это должно работать в любой среде IDE.
Вы можете проверить, соответствует ли значение ожидаемому, позвонив
java -XshowSettings:properties
источник
В Windows я обнаружил, что важно запускать Eclipse из командной строки, а не из меню «Пуск» или ярлыка, при условии, что собственная DLL находится в каталоге в вашем PATH. По-видимому, это гарантирует, что правильный каталог находится на пути.
источник