java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion 驗證碼無法顯示
阿新 • • 發佈:2020-08-19
本地沒問題,部署到伺服器上圖片驗證碼生成報錯。原來是圖形驗證碼依賴了系統元件,只需安裝依賴即可解決。
1、Centos 7.3系統:
yum install fontconfig
fc-cache --force
2、Alpine 系統:
apk add fontconfig
apk add --update ttf-dejavu
fc-cache --force
3、專案採用docker進行構建執行,如果每次都需要重新安裝此元件,很耗時。
採取另一種措施:重新構建一個基礎映象(安裝好依賴,用於支援驗證碼功能)。後續其他映象基於此基礎映象做構建。
參考Dockerfile如下:
FROM openjdk:8-jdk-alpine
RUN apk add --update --no-cache ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
構建:docker build -t new/openjdk:8-jdk-alpine .
後續業務映象基於新的基礎映象構建:
# FROM openjdk:8-jdk-alpine
FROM new/openjdk:8-jdk-alpine
ADD *.jar app.jar
EXPOSE 8080
ENV MYSQL_SERVER="127.0.0.1:3306"
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Duser.timezone=GMT+08","-jar","/app.jar"]