2015-08-04 2 views
-1

Я использую FatJar для создания одной банки с postgresql.jar, jdatepicker.jar и родными библиотеками. Я объединил проект с одной банкой. Нет ошибки postgresql и jdatepicker jar. И я могу загрузить свою собственную библиотеку программно. Но я не могу загружать зависимые библиотеки. Когда я помещаю библиотеки C: \ Windows \ System32, ошибка библиотеки, зависящая от загрузки, отсутствует. Но я хочу загрузить зависимые библиотеки из jar. Я расстегнул молдавчик, и я мог видеть зависимые библиотеки. Но я не могу загрузить из банки. Как я могу это сделать ?Использование FatJar для родных библиотек

Edit:

Это моя ошибка выхода: enter image description here

и это мой путь к классам:

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" path="src"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre7"> 
     <attributes> 
      <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="JavaWinForms"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="lib" path="jdatepicker-1.3.4.jar"/> 
    <classpathentry kind="lib" path="postgresql-9.4-1201.jdbc41.jar"/> 
    <classpathentry kind="output" path="bin"/> 
</classpath> 

и мои родные библиотеки в/Проект/Библиотека папки.

+0

Я не уверен, что вы просите. Какую конкретную ошибку вы видите? Можете ли вы показать нам скриншоты того, что вы видите, и того, что вы ожидаете увидеть? –

+0

Я вижу ошибку «Не могу найти зависимые библиотеки». – bzkrtmurat

+0

Можете ли вы опубликовать полный текст об ошибке? Можете ли вы показать нам свой путь к классам и путь к вашей родной библиотеке? –

ответ

2

упрощая, вы можете думать о зависимостях приложения Java, как две отдельные вещи:

  1. Путь к папкам. Сюда входят ваши классы, а также банки любых библиотек, которые вы используете.
  2. Собственный путь библиотеки. Сюда входят ресурсы, используемые для собственного кода.

Похоже, что вы правильно устанавливаете первый, но не второй.

Без One-JAR вы должны указать свой путь к исходной библиотеке, используя аргумент командной строки java.library.path. Попробуйте указать, что когда вы запускаете свою банку.

Если это работает, вы можете посмотреть, как One-JAR обрабатывает собственные библиотеки. This выглядит хорошей отправной точкой.

Google - ваш друг, и для получения дополнительной информации попробуйте выполнить поиск «java native libraries», «java.library.path» или «onejar native libraries».

Более подробную информацию можно найти в этих смежных вопросов:

How to bundle a native library and a JNI library inside a JAR?

What is LD_LIBRARY_PATH and how to use it?

Shameless саморекламой: Вы можете также использовать инструмент я создал под названием JarMatey, который очень похож на One-JAR.

+0

Благодарим за ответ. Но у меня есть вопросы. Теперь я использую плагин Eclipse Fat-Jar, и я создаю fatjar. Мой fatjar может найти мою родную библиотеку, и он может найти зависимые библиотеки из папки System32. Но я хочу найти зависимые библиотеки от моего жирного. Как я могу это сделать? Я пропустил один пункт. Извините за мою неопытность. Я действительно новичок в создании fatjar с родными DLL. – bzkrtmurat

+0

Вы должны установить собственный путь библиотеки во время выполнения. One-JAR (и JarMatey) делают это, тайно извлекая файлы родной библиотеки во временный каталог, а затем устанавливая аргумент командной строки java.library.path, прежде чем запускать вашу программу. –

+0

Это только извлечение моего файла библиотеки. Он не извлекает зависимые библиотеки моей родной библиотеки. Мои зависимые библиотеки моей библиотеки находятся в jar-файле. Могу ли я установить собственный путь библиотеки как файл Jar? – bzkrtmurat

Смежные вопросы