首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.library.path中没有字体管理器

java.library.path中没有字体管理器
EN

Stack Overflow用户
提问于 2016-05-16 10:04:39
回答 2查看 3.6K关注 0票数 2

以下代码在我的桌面上运行得很好:

代码语言:javascript
运行
复制
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();
        g.setFont(new Font("SansSerif", Font.BOLD, 18));

        Graphics2D graphics = (Graphics2D) g;
        graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        graphics.drawString(s, 5, 20);

但是,当我在服务器上运行此代码(openjdk运行在Docker容器中的linux阿尔卑斯上)时,它会失败,出现以下错误:

代码语言:javascript
运行
复制
java.lang.UnsatisfiedLinkError: no fontmanager in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at sun.font.FontManagerNativeLibrary$1.run(FontManagerNativeLibrary.java:61)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerNativeLibrary.<clinit>(FontManagerNativeLibrary.java:32)
at sun.font.SunFontManager$1.run(SunFontManager.java:339)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.<clinit>(SunFontManager.java:335)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:82)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
at java.awt.Font.getFont2D(Font.java:491)
at java.awt.Font.access$000(Font.java:224)
at java.awt.Font$FontAccessImpl.getFont2D(Font.java:228)
at sun.font.FontUtilities.getFont2D(FontUtilities.java:180)
at sun.java2d.SunGraphics2D.checkFontInfo(SunGraphics2D.java:669)
at sun.java2d.SunGraphics2D.getFontInfo(SunGraphics2D.java:830)
at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:50)
at sun.java2d.pipe.ValidatePipe.drawString(ValidatePipe.java:165)
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2928)

java -version (在我的服务器上)提供:

代码语言:javascript
运行
复制
openjdk version "1.8.0_77-internal"
OpenJDK Runtime Environment (build 1.8.0_77-internal-alpine-r0-b03)
OpenJDK 64-Bit Server VM (build 25.77-b03, mixed mode)

我搜索了awt语言库,它们可以在这里找到:

代码语言:javascript
运行
复制
/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libawt_headless.so
/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libawt.so
EN

回答 2

Stack Overflow用户

发布于 2016-10-04 20:40:10

我在运行AlpinLinux3.4时遇到了同样的问题。我按照这个github问题中的指示解决了这个问题

  1. 安装具有GUI支持的JRE,即openjdk8-jre而不是openjdk8-jre-head
  2. 安装fontconfigttf-dejavu

我的Dockerfile中的运行行如下所示:

代码语言:javascript
运行
复制
RUN apk add openjdk8-jre fontconfig ttf-dejavu

在此之后,JDK能够自动加载默认字体,并且异常消失了。

票数 7
EN

Stack Overflow用户

发布于 2021-02-10 12:37:00

我在我的坞映像中遇到了同样的问题,我使用的是Java 11应用程序库,它没有安装GUI库。我得到了一个错误,比如,没有字体管理器,,导致这个错误的原因是->,它无法使用->库读取/创建字体。

当使用时,带有GUI的java拉伸图像支持错误消失。

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

https://stackoverflow.com/questions/37251309

复制
相关文章

相似问题

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