我正在尝试在 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库:/我在这里错过了什么吗?我该怎么做才能使这项工作发挥作用?
添加回答
举报
0/150
提交
取消