Java Connector在Docker中的应用

mqkwyuun  于 2023-04-20  发布在  Docker
关注(0)|答案(2)|浏览(150)

我正在尝试使用springboot构建一个sap java连接器。为了构建这个应用程序,我们需要sapjco3.jar和sapjco3.so。
我正在使用Hibersap库,并添加了maven jar依赖项。在文档中,它说要运行应用程序,我们需要在java params中传递java.library.path={path to the .so file}。
该应用程序在Linux中运行良好,但我面临:

Caused by: java.lang.ExceptionInInitializerError: JCo initialization failed with java.lang.UnsatisfiedLinkError: /usr/lib/libsapjco3.so: libuuid.so.1: cannot open shared object file: No such file or directory

当我尝试在Docker中运行时。
我已经在我的dockerfile中添加了这个:

VOLUME ["/var/log/hip"]
ADD maven/@file@ app.jar
COPY libsapjco3.so /usr/lib/libsapjco3.so
RUN chmod a+x -R /usr/lib/libsapjco3.so
RUN sh -c 'touch /app.jar'
CMD [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar --logging.path=/var/log/hip"]

我正在尝试使用以下路径:

System.setProperty("java.library.path","/usr/lib");

正如我所说,这在windows中使用dll和linux使用,但在运行linux的docker中失败。

irlmq6kh

irlmq6kh1#

我遇到了同样的问题(WSO2 Docker镜像和SAP集成),尝试在Docker镜像中安装“libuuid”包。SAP连接器正在搜索libuuid,所以我安装了它,它启动了。我在Docker镜像中使用Alpine Linux,这很有帮助:

apk add libuuid
yruzcnhs

yruzcnhs2#

我使用**amazoncorretto docker镜像和Sping Boot **应用程序的工作解决方案:

FROM amazoncorretto:11.0.18-al2023

ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar

COPY src/main/resources/lib/libsapjco3.so /opt/sap/libsapjco3.so
COPY src/main/resources/lib/sapjco3.jar /opt/sap/sapjco3.jar

ENV CLASSPATH="/opt/sap/sapjco3.jar:${CLASSPATH}"
ENV LD_LIBRARY_PATH="/opt/sap"

ENTRYPOINT ["sh", "-c", "java -cp app.jar -Dloader.path=/opt/sap/ org.springframework.boot.loader.PropertiesLauncher"]

相关问题