Eclipse手动导入OR-Tools jar运行报com/sun/jna/Platform类缺失问题咨询
问题根因
你碰到的java.lang.NoClassDefFoundError: com/sun/jna/Platform是典型的依赖缺失错误:OR-Tools的Java封装层靠JNA实现对底层C++动态库的调用,你手动导入jar时只添加了OR-Tools本身的核心包,漏了它依赖的JNA相关组件,运行时自然找不到对应类。
可行方案
完全可以直接拷贝编译生成的依赖jar到自定义Eclipse项目使用,不需要强制依赖Maven管理包,按步骤操作即可:
- 先找到你本地执行
make run成功后生成的依赖存放目录,通常在OR-Tools编译输出路径下的lib子文件夹里,把以下几个必须的jar全部找齐:- 对应版本的
ortools-java核心jar - 和你当前操作系统匹配的OR-Tools本地适配jar(不同系统命名带win/linux/darwin标识,别错用跨系统的包)
jna-xxx.jar就是你当前缺失的JNA核心包,一定要用编译时自带的版本,不要随便用其他来源的版本,很容易出现版本不兼容问题jna-platform-xxx.jarJNA平台适配依赖
- 对应版本的
- 在你自己的Eclipse项目根目录新建
lib文件夹,把上面找齐的所有jar全部拷贝进去 - 选中
lib文件夹下所有jar,右键依次选择Build Path->Add to Build Path,把所有包加入项目构建路径 - 打开项目运行配置,切到
Classpath标签页,确认刚才添加的所有jar都已经在类路径条目里,没有遗漏
注意事项
不要混用不同来源、不同版本的OR-Tools包和JNA包,直接从你本地已经能正常运行make run的编译产物里拷贝依赖是最稳妥的,不会出现版本匹配问题。配置完成后直接运行线性规划示例代码即可正常启动,和make run的运行效果完全一致。
内容的提问来源于stack exchange,提问作者ABuNeNe
相关产品推荐
相关产品推荐

