java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)

起因

        近日有个项目用到了LED,负责与LED通讯的SDK是java,实现了通过接口来调用LED。

本地Springboot项目怎么跑都没问题,打成jar发布到服务器上就报错,服务器采用docker部署。

以下是Dockerfile内容

FROM java:8-alpine
VOLUME /tmp
ADD app.jar app.jar
ADD /images/ /images/
EXPOSE 8080
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

错误信息

java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)

定位问题

原因是Alpine环境缺少对应的包。此问题影响所有使用官方Alpine的Java环境。

解决办法

Dockerfile添加如下代码

RUN apk add --update ttf-dejavu fontconfig

或者

RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main\n\
https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/community" > /etc/apk/repositories
RUN apk --update add curl bash ttf-dejavu && rm -rf /var/cache/apk/*

例如

FROM java:8-alpine
VOLUME /tmp
ADD app.jar app.jar
ADD /images/ /images/
EXPOSE 8080
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
# 解决alpine底包没有字体问题
RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main\n\
https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/community" > /etc/apk/repositories
RUN apk --update add curl bash ttf-dejavu && rm -rf /var/cache/apk/*
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值