赞
踩
项目一直部署在阿里云上,一直正常运行。最近换新环境之后登陆界面的验证码不显示,后台报错:
java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion
代码没变过,一样的包,那只能从部署环境找问题。仔细对比了现在和以前的环境,发现之前用的是JDK1.8,现在用的是OpenJDK8。查了一些资料,证实了一件事情——OpenJDK不支持awt包下的字体。
解决办法有两个,要么改服务器环境,要么改自己的代码。
在服务器上安装FontConfig组件:
- yum install fontconfig
- fc-cache --force
上面的方法看起来很好用,但是不解决实际问题,换一个服务器就得执行一回,最终决定还是直接改项目里的代码,要么直接用服务器上有的字体文件,要么在项目里引一个字体文件进去。
创建一个springBoot项目。
windows系统:打开C:\Windows\Fonts 目录,找个喜欢的字体,复制到项目里。
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.core.io.ClassPathResource;
-
- import java.awt.*;
- import java.io.InputStream;
-
- @SpringBootApplication
- public class AwtApplication {
-
- private static Font loadFontResource() throws Exception {
- InputStream resourceAsStream = null;
- try {
- ClassPathResource classPathResource = new ClassPathResource("static/font/STXIHEI.TTF");
- resourceAsStream =classPathResource.getInputStream();
- Font font = Font.createFont(Font.TRUETYPE_FONT, resourceAsStream);
- Font targetFont = font.deriveFont(Font.PLAIN);
- return targetFont;
- } catch (FontFormatException e) {
- e.printStackTrace();
- return null;
- }
-
- }
-
-
- public static void main(String[] args) {
- SpringApplication.run(AwtApplication.class, args);
- try {
- Font font = loadFontResource();
- System.out.println("字体名称:"+font.getFontName());
- }catch (Exception e){
- e.printStackTrace();
- }
-
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。