运行jar文件时在docker容器中加载.so库时出错

时间:2019-03-06 16:44:18

标签: java docker .so

我试图在Docker容器中运行Java Spring Boot应用程序。 jar文件(testapp.jar)包含所有依赖项,其中一个依赖项在其中包含一个.so(libjsimplerdma.so)库。运行图像时,它将引发以下异常:

java.lang.UnsatisfiedLinkError: /tmp/jxio8802823867088/libjsimplerdma.so: libsimplerdma.so: cannot open shared object file: No such file or directory

我的Dockerfile具有:

FROM centos:7
WORKDIR /
RUN yum update -y \
   && yum -y install gcc glibc glibc-common \
   && yum -y install cmake \
   && yum -y install epel-release \
   && yum -y install python python-pip libxslt-devel python-devel libxml2- devel \
   && yum -y install java \
   && yum -y clean all

COPY testapp.jar /var/lib/test-app/testapp.jar
COPY application.properties /var/lib/test-app/application.properties
ADD run-test-app.sh /

USER root
ENTRYPOINT ["/run-test-app.sh"]

在run-test-app.sh中,我有:

#!/bin/bash

echo "Starting testapp"
cd /var/lib/test-app
java -Djava.library.path=/tmp/ -jar testapp.jar -- spring.config.location=/var/lib/test-app/  

testapp.jar包含jtest-rdma.jar,其中包含libjsimplerdma.so文件:

在testapp.jar中:

38713 Wed Feb 27 11:55:10 EST 2019 BOOT-INF/lib/jtest-rdma.jar

并且jtest-rdma.jar具有libjsimplerdma.so:

19024 Wed Feb 27 11:55:10 EST 2019 libjsimplerdma.so

当我使用docker运行映像时,出现以下错误:

Native code library failed to load
java.lang.UnsatisfiedLinkError: /tmp/jxio8802823867088/libjsimplerdma.so: libsimplerdma.so: cannot open shared object file: No such file or directory

当我检查/tmp时,只看到创建的目录jxio8802823867088,但里面没有文件。

如果我在本地运行jar(没有docker容器),则可以正常运行。

我不确定我在这里错过了什么?

0 个答案:

没有答案