我正在构建将在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
上面链接的最后部分对此进行了说明,它需要这些库才能正确运行:
freetype fontconfig
我已经修改了
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问题中找到了此代码段。但是我仍然无法使其正常工作。
您能在这里发现为什么我无法运行该程序的问题吗?
编辑:
我仍然收到错误
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
-folder时,会列出io.woo.htmltopdf
-library。路径tmp/io.woo.htmltopdf/wkhtmltox/0.12.5/libwkhtmltox.so
也存在于Docker容器中。可能是路径设置的东西吗? Java应用程序未使用正确的路径吗?
正在运行的
app.jar
位于根文件夹中,该文件夹也位于tmp
文件夹中-因此它应该找到它? 最佳答案
我设法通过使用本机wkhtmltopdf
库和wkhtmltopdf java wrapper来解决此问题。