Mac运行Google OR-Tools Java示例遇UnsatisfiedLinkError问题求助
解决Mac OS下Google OR-Tools Java示例的
java.lang.UnsatisfiedLinkError问题 嘿,刚帮好几个Java新手搞定过这个问题,别慌!这是OR-Tools Java版本典型的本地库依赖问题——程序找不到jniortools这个系统库,咱们一步步来解决:
最省心的方案:用Homebrew安装OR-Tools
Mac上用Homebrew装OR-Tools是最省事的,它会自动把本地库放到系统能找到的位置:
- 如果你还没装Homebrew,先敲这个命令安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - 然后安装OR-Tools:
brew install or-tools - 安装完成后,
libjniortools.dylib(Mac上的动态库格式)会被放到对应的目录:- Intel芯片Mac:
/usr/local/lib - Apple Silicon芯片Mac:
/opt/homebrew/lib
- Intel芯片Mac:
接下来要让Java找到这个库:
命令行运行程序
直接在终端运行你的Java程序时,加上-Djava.library.path参数指定库的路径:
# Intel Mac示例 java -Djava.library.path=/usr/local/lib -cp your-class-path YourMainClass # Apple Silicon Mac示例 java -Djava.library.path=/opt/homebrew/lib -cp your-class-path YourMainClass
IDE中运行(比如IntelliJ/Eclipse)
以IntelliJ为例:
- 点击顶部菜单栏的
Run->Edit Configurations - 找到你的Java运行配置,在
VM options里添加:-Djava.library.path=/usr/local/lib # 或者Apple Silicon对应的/opt/homebrew/lib - 保存后重新运行程序就行。
手动下载预编译包的方案(不想用Homebrew的话)
如果偏好手动管理:
- 下载对应Mac芯片的OR-Tools预编译包(注意区分Apple Silicon或Intel版本)
- 解压后找到
lib文件夹,里面就有libjniortools.dylib - 运行程序时,把
java.library.path指向这个lib文件夹,或者把libjniortools.dylib复制到/usr/local/lib(需要sudo权限):sudo cp /path/to/extracted/lib/libjniortools.dylib /usr/local/lib
最后确认下你的代码里加载库的语句是对的:System.loadLibrary("jniortools");——Java会自动识别Mac上的libjniortools.dylib,不用写全文件名,这个是没问题的。
内容的提问来源于stack exchange,提问作者pham cuong
相关产品推荐
相关产品推荐

