Java集成Sap产生的no sapjco3 in java.library.path问题

背景

继上一篇重命名问题解决之后, 我发布到服务器上进行使用, 却发现了新的问题

Caused by: java.lang.ExceptionInInitializerError: JCo initialization failed with java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path

该问题产生的原因为: sapjco3需要本地库,在下载使用sap时,包中应该附带so文件和dll文件. 而这两个文件就是sapjco3使用时所必须的产物

解决方案

因为我是部署在linux 因此这里着重讲讲linux的解决方案,windows的方案大同小异, 所以我只会简单说说windows下怎么做测试用sap

1. windows

因为大部分人只是在windows进行开发并且测试, 那么这里我说一下我是如何进行windows本地测试的

  1. 在项目目录创建一个文件夹(名字你随意),我起名为libs. 在里面放入sapjco3.jar以及对应的dll文件, 这两个是在windows运行的关键
  2. pom文件中进行system导入
  3. 上面两项做好之后,本地启动测试就ok了(应该吧…) 反正我是没问题的
    (~ ̄▽ ̄)~

老规矩, 上图
sap本地导入
在这里说一下, 因为你是本地导入,所以你不用担心重命名的问题,你只需要保证你要导入的jar包名称是对的就可以

2. linux

然后就是今天的大头 - linux !

linxu的也很简单, 只不过当时踩了不少坑, 还有一些问题现在也没搞明白…

当时是根据搜到的资料, 将sapjco3的jar包放入了jdk的lib目录下, 然后把libsapjco3.so放入了jre.lib.amd64.serve下 然后配置LD_LIBRARY_PATH环境变量并且导出
只不过当时搞完这一套没啥作用,现在想来应该是没有重启项目的问题, 因为jvm的环境变量只会在初始加载一次

那么除了上面这种, 我再说一说我的方案吧

  1. 下载saplinux的包,并将其解压到你觉得合适的目录 [正常的包中应该有jar包,dll文件,so文件这三个]
  2. 在你项目的启动命令中加入jvm的地址命令 -Djava.library.path=你放置的目录
  3. 然后启动项目, 收工 !

那么如果你的项目已经配置了-Djava.library.path, 那你可以放到对应的path中,或者使用上面那种方法, 这都是可以的, 而且LD_LIBRARY_PATH与-Djava.library.path是叠加关系,并非是覆盖关系, 你可以放心

那么老规矩, 放一下我的参考资料吧

  1. https://stackoverflow.com/questions/26184304/talend-java-lang-unsatisfiedlinkerror-no-sapjco3-in-java-library-path
  2. https://www.cnblogs.com/rinack/p/6866191.html
  3. https://github.com/easonjim/jco-sdk
  4. https://juejin.cn/post/6914109294887567373
  5. https://blog.csdn.net/Jay_1989/article/details/71404398
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值