Я только начинаю изучать JNI. Я следовал простому примеру, и я создал приложение Java, которое называет Привет Мировой метод в собственной библиотеке. Я хотел бы быть нацеленным на Win32 и Linux x86.
Моя библиотека находится в DLL, и я могу назвать ее очень хорошо использованием LoadLibrary, когда DLL добавляется к корню моего проекта Eclipse.
Однако я не могу выяснить, как заставить Eclipse экспортировать выполнимый JAR, который включает DLL и.SO файл для Linux.
Таким образом, мой вопрос в основном; как Вы пошли бы о создании проекта в Eclipse и включали бы несколько версий той же собственной библиотеки?
Спасибо,
Martin
Для исполняемых JAR-файлов вам нужно извлечь их во временный каталог (возможно, в статический блок {}), а затем загрузить DLL из этого каталога (используя System.loadLibrary () в том же блоке). Для этого вам нужно создать подкласс ClassLoader и переопределить метод findLibrary (), чтобы библиотеки можно было найти в этом каталоге. Здесь вы можете использовать любую логику, которая вам нужна, чтобы загрузить библиотеки конкретной платформы. Честно говоря, наименования библиотек на разных платформах в любом случае должны быть одинаковыми - я считаю, что вы опускаете часть «lib» при загрузке и расширение. В этом суть. Наверное, проще использовать One-JAR, как упоминалось на другом плакате :)
Возможно, вы захотите ознакомиться с проектом One-JAR. Он позволяет упаковать ваше приложение и его зависимости (включая родные библиотеки) в один jar-файл.