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

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

Centos 7.3系統:

yum install fontconfig
fc-cache --force

Alpine 系統:

apk add fontconfig
apk add --update ttf-dejavu
fc-cache --force

項目採用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"]

reference:
Alpine-Linux中解決OpenJDK驗證碼無法顯示
OpenJDK驗證碼無法顯示


end

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章