Экспорт в Runnable jar с дополнительными библиотеками собственного кода в eclipse

У меня проблемы с экспортом моего Java-проекта из Eclipse в виде исполняемого файла JAR. Мой проект Java использует внешнюю библиотеку (она называется jri). Я экспортировал файл jri.jar и установил путь к библиотеке для его нативной библиотеки в eclipse, и он отлично работает при разработке в eclipse. Однако, когда я экспортирую его как исполняемый файл JAR, я получаю следующую ошибку:

Cannot find JRI native library!
Please make sure that the JRI native library is in a directory listed in java.library.path.

Я поместил папку с именем lib в тот же каталог, что и jar моего проекта; эта папка lib содержит нативную библиотеку jri Собственная библиотека jri находится не в одном файле, а в папке. Это та же самая установка, которую я имею в затмении.

То, как я экспортирую свой проект в Eclipse,

Export...
Java > Runnable JAR file
Copy required libraries into a sub folder next to the generated Jar
Finish

И моя папка организована так

folder project
  project.jar
  project_lib
    jri.jar
    jri native library folder  

MANIFEST.MF моего project.jar это:

Manifest-Version: 1.0
Class-Path: . project_lib/jri.jar
Main-Class: index

Чего я хочу добиться, так это дать другому человеку папку, включая project.jar и все остальное, что нужно, чтобы он / она мог запустить ее, не устанавливая ничего другого. Спасибо

4 ответа

Решение

Добавьте скрипт, содержащий что-то вроде этого:

#!/bin/bash
java -Djava.library.path=project_lib/native/ -jar project_lib/jri.jar

Я экспортирую некоторые Java-проекты таким образом.

Это относительно сложно реализовать. Решения, которые я видел, включают в себя извлечение собственных библиотек в JAR во временный каталог ОС, а затем его загрузку. Я бы пошел на комплексное решение для этого. Один Jar и Java Class Loader поддерживают его, а на второй странице вы найдете ссылки на похожие инструменты.

Вы можете поместить библиотеки в вашу банку:

Экспорт...

Java> исполняемый файл JAR

Упакуйте необходимые библиотеки в сгенерированный Jar

Конец

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


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

Смотрите эти ссылки:

Я предполагаю, что это как-то связано с тем, что LD_LIBRARY_PATH установлен неправильно. Или файл, который он ищет, не указан в указанном пути.

Вы знаете, у меня были похожие проблемы

Could not extract native JNI library.

все вышесказанное не может мне помочь. Я не мог остановиться и запустить Gradle Deamon, используя команду:

gradle --stop

Я видел, что Gradle Deamon все еще не остановился в моих процессах. Вот почему я убиваю это в моем процессе, и все будет хорошо:)

Другие вопросы по тегам