在 macOS 上使用 JPL 和 SWI-Prolog

我正在尝试在 macOS High Sierra 上将 JPL 与 SWI-Prolog 结合使用,但遇到了问题。事实上,起初libjpl.dylib没有被发现,所以我说的路径,它java.library.path通过


java -Djava.library.path=/Applications/SWI-Prolog.app/Contents/swipl/lib/x86_64-darwin15.6.0/

现在找到了库,但我收到另一个错误:


java.lang.UnsatisfiedLinkError: /Applications/SWI-Prolog.app/Contents/swipl/lib/x86_64-darwin15.6.0/libjpl.dylib: dlopen(/Applications/SWI-Prolog.app/Contents/swipl/lib/x86_64-darwin15.6.0/libjpl.dylib, 1): Library not loaded: @executable_path/../swipl/lib/x86_64-darwin15.6.0/libswipl.dylib

  Referenced from: /Applications/SWI-Prolog.app/Contents/swipl/lib/x86_64-darwin15.6.0/libjpl.dylib

  Reason: image not found

    at java.lang.ClassLoader$NativeLibrary.load(Native Method)

    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)

    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)

    at java.lang.Runtime.loadLibrary0(Runtime.java:870)

    at java.lang.System.loadLibrary(System.java:1122)

    ...

据我了解,这是由于此版本的 SWI-Prolog 是可重定位的(因此具有相对于可执行文件的路径)。


输出otool -L的libjpl.dylib给我这样的输出:


/Applications/SWI-Prolog.app/Contents/swipl/lib/x86_64-darwin15.6.0/libjpl.dylib:

    @rpath/libjsig.dylib (compatibility version 1.0.0, current version 1.0.0)

    @rpath/libjvm.dylib (compatibility version 1.0.0, current version 1.0.0)

    @executable_path/../swipl/lib/x86_64-darwin15.6.0/libswipl.dylib (compatibility version 0.0.0, current version 7.6.4)

    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)

因此,修复它的一种方法是通过 macport 或自制软件安装不可重定位的版本。


问题是,SWI-Prolog 的 MacPorts 和 Homebrew 版本都不包含该libjpl.dylib库:/


我在这里错过了什么吗?我该怎么做才能使这项工作发挥作用?


呼啦一阵风
浏览 190回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java