java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion 驗證碼無法顯示


本地沒問題,部署到服務器上圖片驗證碼生成報錯。原來是圖形驗證碼依賴了系統組件,只需安裝依賴即可解決。

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"]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM