【发布时间】:2019-03-06 10:00:38
【问题描述】:
我正在构建一个将托管在 docker 容器中的 Java 应用程序。这个应用程序的一部分是使用这个库:
https://github.com/wooio/htmltopdf-java
它需要一个 URL 并将其转换为 PDF 文档。但是,当通过 docker 运行 .jar 文件时,我得到了它缺少本机依赖项的错误:
java.lang.UnsatisfiedLinkError: Unable to load library '/tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so': Native library (tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so) not found in resource path
这在上面链接的最后一节中有记录,它需要这些库才能正确运行:
- libc6(或 glibc) libx11 libxext libxrender libstdc++ libssl1.0 freetype 字体配置
我已修改我的Dockerfile 以尝试在 docker build 中安装这些依赖项:
FROM openjdk:8-jdk-alpine
RUN sh -c 'apk update && apk add libssl1.0 libx11 libxext libxrender libstdc++ freetype fontconfig'
COPY server/target/server-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
我是 docker 新手,但我在github repo 的问题中发现了这个 sn-p 代码。但我仍然无法让它工作。
您能在此处发现为什么我无法运行该程序的问题吗?
编辑:
我仍然收到错误java.lang.UnsatisfiedLinkError: Unable to load library '/tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so': Native library (tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so) not found in resource path
但是当 SSH 进入 Docker 容器并查看 tmp-文件夹时,io.woo.htmltopdf-library 会被列出。路径 tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so 也存在于 docker 容器中。
可能与路径设置有关吗? Java 应用程序没有以某种方式使用正确的路径?
正在运行的app.jar 位于根文件夹中,tmp 文件夹也位于该文件夹中 - 所以它应该找到它吗?
【问题讨论】:
-
你能给我提供 jar 和除构建图像之外的任何其他步骤,以便我可以测试吗?
标签: java spring docker dockerfile html2pdf