Как включить встроенные библиотеки для платформы в файл .JAR с помощью Eclipse? - PullRequest
6 голосов
/ 24 апреля 2010

Я только начинаю изучать JNI. Я следовал простому примеру и создал приложение Java, которое вызывает метод Hello World в собственной библиотеке. Я бы хотел ориентироваться на Win32 и Linux x86.

Моя библиотека находится в DLL, и я могу назвать ее прекрасно, используя LoadLibrary, когда DLL добавлена ​​в корень моего проекта Eclipse.
Однако я не могу понять, как заставить Eclipse экспортировать работающий JAR, который включает DLL и файл .SO для Linux.

Так что мой вопрос в основном; как бы вы создали проект в Eclipse и включили в него несколько версий одной и той же нативной библиотеки?

Спасибо,
Martin

Ответы [ 2 ]

4 голосов
/ 29 апреля 2010

Для запускаемых JAR-файлов вам нужно извлечь во временный каталог (возможно, в статическом блоке {}), а затем загрузить DLL из этого каталога (используя System.loadLibrary () в том же блоке). Для этого вам нужно создать подкласс ClassLoader и переопределить метод findLibrary (), чтобы библиотеки могли быть найдены в этом каталоге. Вы можете использовать любую логику, необходимую для загрузки библиотек конкретной платформы. Честно говоря, наименования библиотек на разных платформах должны быть одинаковыми в любом случае - я полагаю, что вы опускаете часть 'lib' при загрузке и расширение. Это суть этого. Вероятно, проще использовать One-JAR, как упоминалось в другом постере:)

3 голосов
/ 29 апреля 2010

Возможно, вы захотите проверить проект One-JAR . Он позволяет упаковать ваше приложение и его зависимости (включая собственные библиотеки) в один файл jar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...