M1芯片Mac上运行SWI-Prolog+Java聊天机器人时出现‘no jpl in java.library.path’错误求助
M1芯片Mac上运行SWI-Prolog+Java聊天机器人时出现‘no jpl in java.library.path’错误求助
兄弟我太懂你刚换M1 Mac的迷茫了,这种跨语言调用的库路径问题对新手来说确实头疼,我之前折腾SWI-Prolog和Java交互的时候也踩过一模一样的坑,给你几个针对M1 Ventura 13.3.1的实操办法,一步步来就能解决:
第一步:先找到JPL库的具体位置
你用Homebrew或MacPorts装的SWI-Prolog,自带的JPL库是个叫libjpl.dylib的文件,先定位它的文件夹路径:- 终端里直接跑这个命令:
find /opt -name libjpl.dylib - 复制输出里的文件夹部分(比如Homebrew装的可能是
/opt/homebrew/Cellar/swi-prolog/8.6.6/lib/swipl/lib/arm64-darwin/,MacPorts的话大概是/opt/local/lib/swipl/lib/arm64-darwin/)
- 终端里直接跑这个命令:
临时测试解决(单次运行有效)
如果只是想先跑通程序试试,直接在运行Java命令的时候手动指定库路径:java -Djava.library.path=/你刚才复制的文件夹路径 -jar 你的聊天机器人.jar如果是在IDE(比如IntelliJ)里运行,找到你的运行配置,在「VM选项」里加上
-Djava.library.path=/你的JPL库文件夹路径就行。永久配置(一劳永逸)
不想每次都输参数的话,把路径加到系统环境变量里:- 终端里打开你的shell配置文件,M1 Mac默认是zsh,所以跑:
open ~/.zshrc - 在文件末尾加一行:
export JAVA_LIBRARY_PATH="/你复制的JPL库文件夹路径:$JAVA_LIBRARY_PATH" - 保存后回到终端,跑
source ~/.zshrc让配置立刻生效,之后不管是终端还是IDE里运行都不用再手动指定了。
- 终端里打开你的shell配置文件,M1 Mac默认是zsh,所以跑:
额外避坑提醒
- 一定要确认你装的SWI-Prolog是arm64版本的!M1芯片不兼容x86版本,终端跑
swipl --version,输出里能看到arm64-darwin就没问题。 - 朋友发的jar包大概率是跨平台的,核心问题还是你本地的JPL库路径没配置对,不用纠结jar包本身。
- 一定要确认你装的SWI-Prolog是arm64版本的!M1芯片不兼容x86版本,终端跑
备注:内容来源于stack exchange,提问作者Anon
相关产品推荐
相关产品推荐

