SapJCO问题记录及解决办法

17 篇文章 1 订阅
8 篇文章 1 订阅

一、解决SpringBoot项目使用sapjco依赖jar包的冲突问题

1.1 背景

在我之前的博文《SpringMVC + RabbitMQ实战(XML配置rabbit,监听多条队列)》提到过使用SpringMVC而不是使用SpringBoot的原因是SpringBoot与sapjco.jar的冲突问题。

It is not allowed to rename or repackage the original archive “sapjco3.jar”

但实际上这个sapjco的问题是可以被解决的。

1.2 解决方法

在IntelliJ IDEA中使用package工具打包SpringBoot项目为jar包
在这里插入图片描述
使用解压工具打开该jar包,进入BOOT-INF/lib文件夹,将sapjco3-3.0.12.jar手动重命名为sapjco3.jar
在这里插入图片描述
把jar包通过XShell传至Linux服务器上,使用java -jar xxx.jar命令运行,便可正常启动SpringBoot项目。
而且不会再出现下述BUG了:

It is not allowed to rename or repackage the original archive “sapjco3.jar”

但新的BUG将会出现,接着往下阅读。

二、解决Linux中的java库中没有sapjco的问题

2.1 背景

使用Postman调用访问SAP的HTTP接口时,后端返回以下错误:

java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path

错误提示当前系统的java类库路径中没有sapjco3,所以需要为系统加上sapjco3。

2.2 解决方法

2.2.1 修改环境变量

执行此步骤之前请确保当前系统已经装好JDK,并配好JDK的环境变量。
编辑环境变量

vim /etc/profile

将最后部分export(用户设置或显示环境变量)部分修改为如下所示(根据自己JDK的实际安装目录修改):

export JAVA_HOME=/usr/java/jdk1.8.0_191-amd64
export CLASSPATH=$JAVA_HOME/lib
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export LD_LIBRARY_PATH=dir:$LD_LIBRARY_PATH:$JAVA_HOME/jre/lib/amd64/server

LD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。

2.2.2 上传sapjco.jar和libsapjco.so至环境变量中的配置路径

根据环境变量中的配置路径提示,将libsapjco3.so上传至$JAVA_HOME/jre/lib/amd64/server文件夹下,将sapjco3.jar上传至$JAVA_HOME/lib

注意,执行完上述两个步骤后,需要执行:

source /etc/profile

使得新的环境变量生效。

三、sapjco版本太旧

3.1 问题

Native library sapjco3 is too old. 
Found library C:\\Windows\\System32\\sapjco3.dll has version \"721.510\", 
but required is at least version \"721.1016\

检查System32文件夹下的sapjco3.jar、sapjco3.dll、regcode.dll三个文件,发现均为最新版本。

3.2 解决

此时,需要检查Maven项目中pom文件依赖的sapjco3.jar,如果是旧版本则需要更新为最新版本,此时问题可以解决。

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值