代码之家  ›  专栏  ›  技术社区  ›  benji

使用CentOS 7:libpng12.so.0打开JDK 1.8.0Ê202:无法打开共享对象文件:

  •  0
  • benji  · 技术社区  · 7 年前

    我正在使用最新的OpenJDK版本:

    $ ./jdk/jre/bin/java -version
    openjdk version "1.8.0_202"
    OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_202-b08)
    OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.202-b08, mixed mode)
    

    我得到的链接错误如下:

    Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/local/apps/jdk/jre/lib/amd64/libfontmanager.so: libpng12.so.0: cannot open shared object file: No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845)
        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.java2d.xr.XRSurfaceData.initXRSurfaceData(XRSurfaceData.java:85)
        at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:137)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:103)
        at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
        at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:132)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at java.awt.Toolkit$2.run(Toolkit.java:860)
        at java.awt.Toolkit$2.run(Toolkit.java:855)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:854)
        at sun.swing.SwingUtilities2.getSystemMnemonicKeyMask(SwingUtilities2.java:2020)
        at javax.swing.plaf.basic.BasicLookAndFeel.initComponentDefaults(BasicLookAndFeel.java:1158)
        at javax.swing.plaf.metal.MetalLookAndFeel.initComponentDefaults(MetalLookAndFeel.java:431)
        at javax.swing.plaf.basic.BasicLookAndFeel.getDefaults(BasicLookAndFeel.java:148)
        at javax.swing.plaf.metal.MetalLookAndFeel.getDefaults(MetalLookAndFeel.java:1577)
        at javax.swing.UIManager.setLookAndFeel(UIManager.java:539)
        at javax.swing.UIManager.setLookAndFeel(UIManager.java:579)
        at javax.swing.UIManager.initializeDefaultLAF(UIManager.java:1349)
        at javax.swing.UIManager.initialize(UIManager.java:1459)
        at javax.swing.UIManager.maybeInitialize(UIManager.java:1426)
        at javax.swing.UIManager.getUI(UIManager.java:1006)
        at javax.swing.JPanel.updateUI(JPanel.java:126)
        at javax.swing.JPanel.<init>(JPanel.java:86)
        at javax.swing.JPanel.<init>(JPanel.java:109)
        at javax.swing.JPanel.<init>(JPanel.java:117)
        at javax.swing.JRootPane.createGlassPane(JRootPane.java:546)
        at javax.swing.JRootPane.<init>(JRootPane.java:366)
        at javax.swing.JApplet.createRootPane(JApplet.java:161)
        at javax.swing.JApplet.<init>(JApplet.java:149)
    

    使用以下操作系统测试:

    • 红帽7.4
    • 森托斯7.4
    • CentOS 7.0版

    我猜安装libpng12.x86_64会让它正常工作。但是这是正常的还是OpenJDK的最新版本有问题?

    谢谢

    0 回复  |  直到 7 年前
        1
  •  0
  •   Florian Weimer    7 年前

    libpng 1.2的兼容包是 libpng12 包裹。可以使用以下命令将其作为根用户安装:

    yum install libpng12
    

    但是,使用AdoptOpenJDK构建可能会有其他集成问题。如果可能,您应该使用作为Red Hat Enterprise Linux一部分的OpenJDK构建。这个OpenJDK构建附带了RPM依赖信息,并与当前的系统libpng版本(1.5.13)相链接。

    您可能可以在Red Hat Enterprise Linux 7.4上安装当前Red Hat Enterprise Linux 7版本的OpenJDK RPM(此时扩展更新支持仅涵盖此版本)。OpenJDK本身不包括在 EUS package set .

        2
  •  0
  •   benji    7 年前

    这实际上是一个问题,已报告和修复后GA发布。随后,AdoptOpenJDK团队重新发布了8u202-b08。

    https://github.com/AdoptOpenJDK/openjdk-build/issues/851

    所以有多种版本的jdk8u202-b08。我下载了一个新版本,它运行良好,无需安装libpng12。

    我被告知新版本将包含一个特定于AdoptOpenJDK的内部版本号,以便能够区分。