0

我正在尝试使用 springboot 构建一个 sap java 连接器。要构建这个应用程序,我们需要 sapjco3.jar 和 sapjco3.so。

我正在使用 Hibersap 库并添加了 maven jar 依赖项。在文档中,它说要运行我们需要在 java 参数中传递 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");

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

4

1 回答 1

3

我有同样的问题(WSO2 Docker 映像和 SAP 集成),尝试在 Docker 映像中安装“libuuid”包。SAP 连接器正在搜索 libuuid,因此我安装了它并启动了它。我在 Docker 映像中使用 Alpine Linux,这有助于:

apk add libuuid
于 2019-08-27T11:45:06.697 回答