背景
使用 kaptcha 等工具实现的验证码是使用了awt包下的方法生成图片,而awt包是依赖了操作系统的一些图形界面功能。在Windows环境下调用通常是正常的,因为Windows系统中的类库基本是齐全的,但是Linux环境下运行可能会出现调用报错,原因是该Linux环境中缺少一些依赖类库。特别对于一些精简版系统,例如docker基础镜像 alpine 版本,通常不会额外附带这些类库。导致初始化FontManagerFactory工厂初始化失败,所以解决方法是安装glibc等必要类库。
pom依赖示例
<!--kaptcha 验证码 -->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
集成后报错信息
java.lang.UnsatisfiedLinkError: /root/home/jdk1.8.0_341/jre/lib/amd64/libfontmanager.so:
libgcc_s.so.1: cannot open shared object file: No such file or directory
java.lang.ClassLoader$NativeLibrary.load(Native Method)
java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1937)
java.lang.ClassLoader.loadLibrary(ClassLoader.java:1