千家信息网

springboot项目接入sap与部署到docker遇到的问题有哪些

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,本篇文章为大家展示了springboot项目接入sap与部署到docker遇到的问题有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言主要记录在协助部署
千家信息网最后更新 2025年02月02日springboot项目接入sap与部署到docker遇到的问题有哪些

本篇文章为大家展示了springboot项目接入sap与部署到docker遇到的问题有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

前言

主要记录在协助部署接入sap遇到的问题,且只记录解决问题的答案,不说明原理。

问题实录

1、问题一:Illegal JCo archive "sapjco-1.0.jar". It is not allowed to rename or repackage the original archive "sapjco3.jar"

解决方案一:手动项目中将sapjco-1.0.jar重名为sapjco3.jar

不过我们没采用这种方案

解决方案二:指定maven的scope为system,形如下

             com.sap            sapjco            ${sap.version}            system            ${project.basedir}/lib/sapjco3.jar        

然后指定resources,形如下

                                    org.springframework.boot                spring-boot-maven-plugin                ${spring-boot.version}                                                                                        repackage                                                                                                    maven-compiler-plugin                                    1.8                    1.8                    UTF-8                                            ${project.basedir}/lib                                                                                            ${project.basedir}/lib                BOOT-INF/lib/                                    **/*.jar                                                        ${project.basedir}/lib                BOOT-INF                                    **/*.so                    **/*.dll                                                        src/main/resources                                                    **/*.yml                    **/*.xml                                        

这个的作用是将sapjco3.jar打进BOOT-INF/lib/

问题二:java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path

因为项目是部署到docker里面去,因此本文只写基于docker的解决方案

解决方案如下:

在dockerFile里面指定LD_LIBRARY_PATH环境变量,形如下

FROM adoptopenjdk/openjdk8VOLUME /tmp#ENV JAVA_OPTS="-Dcom.sun.management.jmxremote.port=39083 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"ENV JAVA_OPTS=""ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATHCOPY localtime /etc/localtimeRUN echo "Asia/Shanghai" > /etc/timezoneCOPY hello-biz/target/hello-biz-*.jar app.jarCOPY hello-biz/lib/libsapjco3.so /usr/local/lib/libsapjco3.soENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

上述内容就是springboot项目接入sap与部署到docker遇到的问题有哪些,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0