Ошибка конфигурации JPL/SWI Prolog

Я сейчас настраиваю JPL и хочу работать с swi-prolog, используя java.

Я скачал последнюю стабильную версию SWI-Prolog 6.2.0 и установил в папку D:\swipl.

Во-первых, я добавил следующий путь к PATH virable: D:\swipl\bin, который должен включать все необходимые dll-файлы.

Затем я добавил следующий путь к CLASSPATH virable: D:swipl\lib\jpl.jar, который должен быть необходимым jar-файлом.

Когда я попытался запустить предоставленный пример версий, я получил следующую ошибку:

Exception in thread "main" java.lang.UnsatisfiedLinkError: jpl.fli.Prolog.thread_self()I
    at jpl.fli.Prolog.thread_self(Native Method)
    at jpl.Query.open(Query.java:286)
    at jpl.Util.textToTerm(Util.java:162)
    at jpl.Query.Query1(Query.java:183)
    at jpl.Query.<init>(Query.java:176)
    at Versions.main(Versions.java:11)

После поиска в Интернете я обнаружил, что многие люди просто получают java.lang.UnsatisfiedLinkError: no jpl in java.library.path из-за настройки переменной PATH, а не из-за ошибки, которую я получаю здесь: java.lang.UnsatisfiedLinkError: jpl.fli.Prolog.thread_self()I (и да, в конце строки есть «I»).

Кто-нибудь получил эту ошибку раньше? Я пробовал несколько предыдущих версий SWI-Prolog, но также получал и другие ошибки. Я использую Eclipse IDE для разработки на Java — ничего не пропустил?


person user1649263    schedule 05.09.2012    source источник


Ответы (4)


Я отправил проблему в официальный список рассылки ([email protected]), предоставленный swi-prolog.org, и, к счастью, кто-то помог мне доказать, что в версии 6.2 есть некоторые проблемы. .0. Потом мы оба попробовали версию 6.0.2, и она отлично работает. Он упомянул, что (и я это заметил) в папке bin версии 6.2.0 нет swipl.dll, что МОЖЕТ вызывать проблему.

Я уже сообщил о проблеме персоналу по электронной почте, и, по крайней мере сейчас, я предлагаю, чтобы люди, которые хотят настроить JPL, загрузили версию 6.0.2. Три вещи, которые нужно помнить:

  1. добавить новую переменную SWI_HOME_DIR под системными переменными в переменные среды и указать путь к тому месту, где вы установили SWI-Prolog (у меня это D:\swipl);

  2. Добавьте путь %SWI_HOME_DIR%\bin в переменную PATH вместо того, чтобы использовать что-то вроде "D:\swipl\bin". (В противном случае произойдет [НЕИСПРАВНАЯ ОШИБКА: Не удалось найти системные ресурсы])

  3. Добавьте путь %SWI_HOME_DIR%\lib\jpl.jar в переменную PATH вместо того, чтобы использовать что-то вроде "D:\swipl\lib\jpl.jar". (В противном случае произойдет [НЕИСПРАВНАЯ ОШИБКА: Не удалось найти системные ресурсы])

Если вы используете Eclipse для разработки Java, кажется, что вам НЕ нужно настраивать в вашей среде IDE. Пока вы выполняете 3 шага выше и добавляете правильный файл jar в качестве внешней библиотеки, все должно быть в порядке.

Я не уверен, что временное решение работает для всех, но определенно каждый, у кого есть проблема, должен сначала попробовать этот метод. Пока проблема в версии 6.2.0 решена, добавлю сюда несколько комментариев.

Кстати, насколько я знаю, до сих пор люди, у которых есть проблема, используют 32-битную Windows.

person user1649263    schedule 06.09.2012
comment
Это снова я, ошибка под 64-битной Windows была исправлена ​​в 6.2.1, а ошибка под 32-битной Windows была исправлена ​​в 6.2.2, которая на данный момент является самой новой стабильной версией. - person user1649263; 12.10.2012

Попробуйте добавить свой путь к java.library.path через «Выполнить»> «Конфигурация запуска»> [имя проекта] и добавьте следующее на вкладке «Аргументы виртуальной машины».

-Djava.library.path="D:\swipl\bin;."

Кроме того, на вкладке «Окружающая среда» добавьте следующее:

VARIABLE: PATH
VALUE: D:\swipl\bin;${env_var:PATH}

После этого перейдите в «Проект»> «Свойства»> «Путь сборки Java», выберите вкладку «Библиотеки». Нажмите «Добавить внешние JARS..» и найдите файл jpl.jar.

person knownasilya    schedule 05.09.2012
comment
Спасибо. Я попробовал ваш метод, но произошла та же ошибка; затем я попытался избавиться от настроек PATH в переменных среды в свойстве Computer, чтобы избежать избыточности, и получил следующую ошибку: Exception in thread main java.lang.UnsatisfiedLinkError: D:\swipl\bin\jpl.dll : не удается найти зависимые библиотеки - person user1649263; 06.09.2012

Великий Великий Великий, второй ответ - решение

  1. создайте переменную SWI_HOME_DIR для установки каталога установки swi prolog SWI_HOME_DIR ------- C:\Program Files\swipl
  2. установите PATH так, чтобы он указывал на библиотеку и bin, как этот PATH ------ %SWI_HOME_DIR%\bin;%SWI_HOME_DIR%\lib\jpl.jar

Это исправит мою проблему «Исключение в потоке «основной» java.lang.UnsatisfiedLinkError: нет jpl в окнах java.library.path», это немного редко, но работает.

person rivax    schedule 02.02.2015

У меня такая же проблема. В дополнение к установке PATH вам необходимо проверить, имеет ли установленная программа SWI ту же архитектуру (32 или 64), что и ваша JVM.

person Wellmor    schedule 22.10.2015