无法初始化类sun.awt.X11FontManager alpine java



我们尝试在alpine_java-17容器中运行java 8应用程序。除了一件事之外,所有的东西都可以正常编译和工作。

关于excel的一个功能不起作用。在日志中我发现:

Could not initialize class sun.awt.X11FontManager

以前,当我们在java8容器中运行应用程序时,我们没有这个问题,因为我们有命令安装所需的软件包:

RUN apt-get install -y fontconfig libfreetype6

但是现在我们有了alpine 17,我们把上面的命令改为

RUN apk add fontconfig
RUN apk add freetype

我试图安装libfreetype6使用运行apk添加libfreetype6,但docker返回我一个错误:

ERROR: unable to select packages:
libfreetype6 (no such package):
required by: world[libfreetype6]
Error response from daemon: The command '/bin/sh -c apk add libfreetype6' returned a non-zero code: 1

看起来freetype和libfreetype6不一样,但是libfreetype6不见了

有人能帮助理解这个问题吗?提前感谢!

在我的情况下,我在基于eclipse-temurin:17-jdk-alpine的docker映像中遇到了这个问题,运行一个使用apache poi生成excel文件的web应用程序。在按如下方式添加fontconfigttf-dejavu包之后(似乎freetypefontconfig的依赖,因此不需要显式安装):

RUN apk add --no-cache fontconfig ttf-dejavu

不只是这里给出的FontText.java类:

https://github.com/AdoptOpenJDK/openjdk-docker/issues/529 issuecomment - 811687786

运行成功,但也可以生成excel文件,这之前会导致问题中给出的异常和以下异常:

...
Caused by: java.lang.UnsatisfiedLinkError: /opt/java/openjdk/lib/libfontmanager.so: Error loading shared library libfreetype.so.6: No such file or directory (needed by /opt/java/openjdk/lib/libfontmanager.so)
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)

最新更新