连接java和swi prolog

时间:2012-10-22 00:39:00

标签: java prolog connect jpl

我正在尝试从java运行swi prolog 我正在使用eclipse,我已经将jpl.jar插入到项目中(properties-> libraries->添加外部jar),当我尝试运行程序时(它是jpl的样本,所以它应该工作..)我收到了一个错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jpl in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1045)
    at jpl.JPL.loadNativeLibrary(JPL.java:100)
    at jpl.fli.Prolog.<clinit>(Prolog.java:85)
    at jpl.Query.open(Query.java:286)
    at jpl.Util.textToTerm(Util.java:162)
    at jpl.Query.<init>(Query.java:198)
    at faf.Main.main(Main.java:10) <br>

我错过了什么?

4 个答案:

答案 0 :(得分:2)

我今天在Debian上遇到了这个问题,我的解决方案与Felix Dobslaw相似。因为我无法在其他地方找到它,我将发布今天我如何解决它。

我的SWI-Prolog和JPL是通过apt-get安装的。根据您的环境更改路径文件夹。

  • libswipl.so /usr/lib复制到usr/lib/swi-prolog/lib/amd64

    sudo cp <probably-user-lib>/libswipl.so <installation-folder-swi>/lib/<architeture>

  • -Djava.library.path="/usr/lib/swi-prolog/lib/amd64"添加为VM选项

    (项目属性 - &gt;运行 - &gt; VM选项)

答案 1 :(得分:1)

根据您的平台,应该有一个jpl dll左右。您应该使其在%PATH%中的某个位置可访问,或者使用-Djava.library.path=<path to jpl.dll> java属性指定其位置。

详细了解JPL installation

答案 2 :(得分:1)

我遇到了同样的问题。这对Ubuntu有帮助:

1)将jpl jar的本机库位置指向您保存“libswipl.so”的文件夹(我通过项目的“Java Build Path”设置执行此操作)。对我来说是:

/usr/lib/swipl-6.2.6/lib/x86_64-linux

2)将保存“libjava.so”的文件夹添加到LD_LIBRARY_PATH变量中(我在环境选项卡下的运行配置中执行此操作)。对我来说是:

/ usr / lib中/ JVM / JAVA -6-的openjdk / JRE / LIB / AMD64

答案 3 :(得分:0)

Eclipse Neon和自制软件的解决方案:

brew update
brew install swi-prolog --with-jpl

在Eclipse Run / Debug-Configuration中设置为VM-Arg:

-Djava.library.path=/usr/local/Cellar/swi-prolog/7.4.2/libexec/lib/swipl-7.4.2/lib/x86_64-darwin16.6.0

实际路径可能有所不同。