You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AIX 7.1中OpenJDK 11无法加载libfontmanager.so模块求助

AIX 7.1 运行OpenJDK 11 Jar包时libfreetype依赖报错处理

问题背景

在AIX 7.1服务器上配置OpenJDK 11后,运行Jar包时程序终止,触发java.lang.UnsatisfiedLinkError。已确认/usr/jdk11/lib/libfontmanager.so存在,且JDK路径已加入LIBPATH、LD_LIBRARY_PATH和PATH环境变量,但报错提示无法加载依赖模块libfreetype.a(libfreetype.so.6)。

具体报错信息

Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/jdk11/lib/libfontmanager.so: /usr/jdk11/lib/libfontmanager.so,LIBPATH=/usr/jdk11/lib/server:/usr/jdk11/lib:/usr/jdk11/lib/jli:/usr/jdk11/../lib:.:/appli/automic/21/Utility/bin:/appli/automic/instantclient_12_1:/usr/lib:/lib:/usr/jdk11/lib,LD_LIBRARY_PATH=.:/appli/automic/21/Utility/bin:/appli/automic/instantclient_12_1:/usr/lib:/lib:/usr/jdk11/lib:       
0509-022 Cannot load module /usr/jdk11/lib/libfontmanager.so.
0509-150   Dependent module libfreetype.a(libfreetype.so.6) could not be loaded.
0509-022 Cannot load module libfreetype.a(libfreetype.so.6).
0509-026 System error: A file or directory in the path name does not exist.
0509-022 Cannot load module /usr/jdk11/lib/libfontmanager.so.
0509-150   Dependent module /usr/jdk11/lib/libfontmanager.so could not be loaded.
at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2445)
at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2501)
at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2700)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2651)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
at java.base/java.lang.System.loadLibrary(System.java:1873)
at java.desktop/sun.font.FontManagerNativeLibrary$1.run(FontManagerNativeLibrary.java:57)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/sun.font.FontManagerNativeLibrary.<init>(FontManagerNativeLibrary.java:32)
at java.desktop/sun.java2d.xr.XRSurfaceData.initXRSurfaceData(XRSurfaceData.java:104)
at java.desktop/sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:124)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/sun.awt.X11GraphicsEnvironment.<init>(X11GraphicsEnvironment.java:61)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at java.desktop/java.awt.GraphicsEnvironment$LocalGE.createGE(GraphicsEnvironment.java:101)
at java.desktop/java.awt.GraphicsEnvironment$LocalGE.<init>(GraphicsEnvironment.java:83)
at java.desktop/java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:129)
at java.desktop/sun.awt.X11.XToolkit.<init>(XToolkit.java:232)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at java.desktop/java.awt.Toolkit$2.run(Toolkit.java:588)
at java.desktop/java.awt.Toolkit$2.run(Toolkit.java:583)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/java.awt.Toolkit.getDefaultToolkit(Toolkit.java:582)
at java.desktop/sun.swing.SwingUtilities2.getSystemMnemonicKeyMask(SwingUtilities2.java:2212)
at java.desktop/javax.swing.plaf.basic.BasicLookAndFeel.initComponentDefaults(BasicLookAndFeel.java:1096)
at java.desktop/javax.swing.plaf.metal.MetalLookAndFeel.initComponentDefaults(MetalLookAndFeel.java:440)
at java.desktop/javax.swing.plaf.basic.BasicLookAndFeel.getDefaults(BasicLookAndFeel.java:150)
at java.desktop/javax.swing.plaf.metal.MetalLookAndFeel.getDefaults(MetalLookAndFeel.java:1560)
at java.desktop/javax.swing.UIManager.setLookAndFeel(UIManager.java:587)
at java.desktop/javax.swing.UIManager.setLookAndFeel(UIManager.java:629)
at java.desktop/javax.swing.UIManager.initializeDefaultLAF(UIManager.java:1404)
at java.desktop/javax.swing.UIManager.initialize(UIManager.java:1517)
at java.desktop/javax.swing.UIManager.maybeInitialize(UIManager.java:1483)
at java.desktop/javax.swing.UIManager.getDefaults(UIManager.java:709)
at java.desktop/javax.swing.UIManager.put(UIManager.java:1038)
at com.ucutil.ucdbload.CUCYDBLoad.licence(CUCYDBLoad.java:231)
at com.ucutil.ucdbload.CUCYDBLoad.<init>(CUCYDBLoad.java:118)
at com.ucutil.ucdbload.CUCYDBLoad.main(CUCYDBLoad.java:958)

关键说明

libfreetype.a(libfreetype.so.6)是系统级独立依赖库,并非libfontmanager.so的内部模块,OpenJDK 11的字体管理模块需要依赖该库完成字体渲染相关操作。

解决步骤

1. 检查系统是否已安装freetype库

执行以下命令查看已安装的freetype包:

lslpp -l | grep freetype

若无输出,说明未安装该库。

2. 安装freetype库

  • 通过AIX系统安装介质(如安装光盘、NIM服务器)安装,使用smitty install图形化工具或installp命令,对应的包名通常为freetype.rte。
  • 若无法通过系统介质安装,可从IBM官方提供的AIX工具包获取适配AIX 7.1的freetype安装包进行安装。

3. 验证安装与环境变量

安装完成后,执行以下命令确认安装成功:

lslpp -l freetype.rte

同时确保freetype库所在路径(通常为/usr/lib或/opt/freeware/lib)已加入LIBPATH环境变量(AIX系统优先识别LIBPATH,而非LD_LIBRARY_PATH)。

4. 临时应急方案(无需安装库)

若程序不需要图形界面或字体渲染功能,可通过添加JVM参数禁用AWT/Swing相关模块,避免加载依赖库:

java -Djava.awt.headless=true -Dsun.java2d.xrender=false -jar 你的应用包名.jar

内容的提问来源于stack exchange,提问作者Bharath Kumar Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 20:40:29