You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下SCIP 8.x.x结合JNI与Or-Tools使用遇链接错误求助

MacOS下SCIP 8.x.x结合Or-Tools JNI使用报错排查

操作步骤回顾

  1. 编译安装SCIP 8.0.4:
mkdir build
cd build
cmake ..  -DAUTOBUILD=on
make
make install
  1. 验证共享库生成:
➜ ls /usr/local/lib/libscip.dylib
/usr/local/lib/libscip.dylib
  1. 编写的Java代码片段:
System.loadLibrary("scip"); // 验证共享库可访问
MPSolver mpSolver = MPSolver.createSolver("SCIP");
  1. 运行时错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: 'long com.google.ortools.linearsolver.mainJNI.MPSolver_createSolver(java.lang.String)'
    at com.google.ortools.linearsolver.mainJNI.MPSolver_createSolver(Native Method)
    at com.google.ortools.linearsolver.MPSolver.createSolver(MPSolver.java:140)
    at org.example.Solver.solve(Solver.java:58)
    at org.example.Solver.main(Solver.java:24)

解决方案

1. 重新编译SCIP,启用Or-Tools支持

默认编译参数可能未开启Or-Tools相关绑定,重新编译时添加对应参数:

# 清理原有编译文件
rm -rf build
mkdir build && cd build
# 启用动态库、自动构建及Or-Tools支持
cmake .. -DAUTOBUILD=on -DSHARED=on -DOR_TOOLS=on
make
make install

2. 指定Java库搜索路径

MacOS下/usr/local/lib可能不在Java默认的库搜索路径中,运行程序时需显式指定:

java -Djava.library.path=/usr/local/lib -jar 你的应用jar包名.jar

如果使用IDE开发,需在VM选项中添加:

-Djava.library.path=/usr/local/lib

3. 确认Or-Tools版本兼容性

确保使用的Or-Tools版本与SCIP 8.0.4兼容(建议使用Or-Tools 9.0及以上版本),避免版本不匹配导致的JNI接口差异。

4. 检查库加载顺序

确保System.loadLibrary("scip")语句在MPSolver.createSolver之前执行,且库名拼写正确(无需添加lib前缀,Java会自动处理不同系统的库命名规则)。

内容的提问来源于stack exchange,提问作者Roman Makhlin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 01:17:25