作者:再体验初体验g_154 | 来源:互联网 | 2023-06-16 18:40
一、解决SpringBoot项目使用sapjco依赖jar包的冲突问题1.1背景在我之前的博文《SpringMVCRabbitMQ实战(XML配置rabbit
一、解决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-amd64export CLASSPATH= $JAVA_HOME /libexport JRE_HOME= $JAVA_HOME /jreexport 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,如果是旧版本则需要更新为最新版本,此时问题可以解决。