背景介绍
Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建、读取、编辑、转换和打印等功能集成到自己的 Java 应用程序中。作为一款完全独立的组件,Spire.Doc for Java 的运行环境无需安装 Microsoft Office。同时兼容大部分国产操作系统,能够在中标麒麟和中科方德等国产操作系统中正常运行。
具体的使用方式请参考:Spire-Doc-JAVA
在springboot搭建的项目中引入该组件,上传到docker上生成镜像,并执行容器,之后进入正题:读取嵌入Word文档中的视频等其他文件,发现会报空指针的问题!
原因分析
之前的DockerFlie文件:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD spire-demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["sh","-c","java $PARAMS -Djava.security.egd=file:/dev/./urandom -jar /app.jar"]
OpenJDK底层源码均来源于OracleJDK,基于开源协议的要求,将Oracle JDK中用到的一些非开源的组件、代码替换为开源的组件,故对于一些jdk底层jar包并不支持!
解决方案
替换JDK镜像为:frolvlad/alpine-oraclejdk8:slim
修改后的DockerFile为:
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD spire-demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["sh","-c","java $PARAMS -Djava.security.egd=file:/dev/./urandom -jar /app.jar"]
重新上传至docker中执行即可成功解析!