首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UnsatisfiedLinkError:系统库路径中没有字体管理器: /usr/lib/jvm/java-17-openjdk/lib

UnsatisfiedLinkError:系统库路径中没有字体管理器: /usr/lib/jvm/java-17-openjdk/lib
EN

Stack Overflow用户
提问于 2022-05-13 08:42:17
回答 1查看 494关注 0票数 5

在我们将容器迁移到阿尔卑斯_java-17 excel之后,导出功能失败,下一个错误是:

代码语言:javascript
运行
复制
java.lang.UnsatisfiedLinkError: no fontmanager in system library path: /usr/lib/jvm/java-17-openjdk/lib

我在我的Dockerfile中安装了:

代码语言:javascript
运行
复制
RUN apk add --no-cache fontconfig
RUN apk add --no-cache ttf-dejavu
RUN apk add --no-cache freetype

下面是Dockerfile的简短版本:

代码语言:javascript
运行
复制
    FROM custom_registry/alpine_java-17


ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk


# procps to have the binary 'pgrep'
RUN apk update
RUN apk add curl
RUN apk add procps

#here's mu solution to fix the issue
RUN apk add --no-cache fontconfig
RUN apk add --no-cache ttf-dejavu
RUN apk add --no-cache freetype

# install bash
RUN apk add --no-cache bash

ENTRYPOINT [ "/app/bin/run.sh" ]

但没什么用。也许有人知道怎么解决这个问题?提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2022-05-20 17:08:50

若干备选方案:

首先,高山上的标准Java安装是“无头”Java,它不包括JRE目录中的任何图形库。您需要确保安装了非无头JRE。例如在您的Dockerfile中

代码语言:javascript
运行
复制
RUN apk add --no-cache curl openjdk17-jre

如果仍然失败,则可能需要调试本机库。

看起来您已经安装了正确的包,但是它们的默认位置将不是Java正在查找的/usr/lib/jvm/java-17-openjdk/lib位置。

您可以使用apk来确认包的安装位置,我猜是/usr/lib。

代码语言:javascript
运行
复制
/ $ apk -L info fontconfig

样本输出(用于lcms)

代码语言:javascript
运行
复制
lcms2-2.12-r1 contains:
usr/lib/liblcms2.so.2
usr/lib/liblcms2.so.2.0.12

那么我想你有几个选择:

  1. 将/usr/lib/jvm/java-17-openjdk/lib目录中的符号链接添加到实际的库位置。

  1. 更新指定系统库位置的java启动属性。例如:

-Djava.library.path="/usr/lib/jvm/java-17-openjdk/lib:/usr/lib"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72226732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档