Centos7 离线安装字体fontconfig

一、问题:

开发部署web项目,会存在使用验证码的场景,在linux服务器部署可能会遇到如下错误:

Caused by: java.lang.reflect.InvocationTargetException: null
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
        at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:85)
        ... 83 common frames omitted
Caused by: java.lang.NullPointerException: Cannot load from short array because "sun.awt.FontConfiguration.head" is null
        at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
        at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:224)
        at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:106)
        at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:706)
        at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:358)
        at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:315)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:315)
        at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
        at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
        ... 89 common frames omitted

二、原因:

OpenJDK比OracleJDK简化了一些功能,所以后端绘制验证码所要用到Java的AWT组件就被简化了,结果报出空指针。

问题出现了,现在有三种解决思路:

  • 1、修改代码,后端只生成验证码内容,具体绘制交给前端
  • 2、更换为OracleJDK
  • 3、基于操作系统安装FontConfig组件

综合建议第3种是最快捷的处理方案。

三、Centos7 离线安装字体fontconfig

安装过程比较简单,请参考以下文章操作即可。linux 离线安装字体

说明:安装过程中要上传本地字体库至服务器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS 7离线安装PostgreSQL的步骤如下: 1. 首先,在一台联网的CentOS 7机器上下载所需的PostgreSQL安装包。可以在官方网站(https://www.postgresql.org/)上找到最新的发布版本。选择适用于CentOS 7的RPM安装包,并下载到本地。 2. 将下载好的RPM安装包以及其所有依赖的RPM安装包打包成一个tar.gz压缩包,方便在离线环境中使用。 3. 将这个压缩包复制到目标机器上。 4. 在离线环境的CentOS 7机器上,解压缩这个打包好的压缩包。 5. 在解压缩的目录中,打开终端,并以root用户身份执行以下命令以安装PostgreSQL及其依赖: ``` rpm -ivh *.rpm ``` 其中,`*.rpm`是指安装包所在的目录下所有RPM安装包的通配符。 6. 安装完成后,需要进行一些基本的配置,例如创建数据库管理员用户、启动数据库服务以及设置开机自启动等。具体的配置步骤可以参考PostgreSQL官方文档。 注意事项: - 离线安装PostgreSQL时,需要确保所下载的RPM安装包与目标机器的CentOS 7版本和硬件架构相匹配,否则可能导致安装异常或不成功。 - 离线安装时,需提前了解PostgreSQL所需的所有依赖,并确保在目标机器上已经安装了这些依赖的RPM包,否则安装过程将会失败。可以通过在联网环境中运行以下命令查看依赖关系: ``` yum deplist *.rpm ``` 以上是CentOS 7离线安装PostgreSQL的简要步骤,具体操作可能会因实际情况而有所差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值