带有 CentOS 7 的 OpenJDK 1.8.0_202:libpng12.so.0:无法打开共享对象文件:
OpenJDK 1.8.0_202 with CentOS 7: libpng12.so.0: cannot open shared object file:
我正在使用最新的 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.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.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.run(Toolkit.java:860)
at java.awt.Toolkit.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
- Centos 7.4
- CentOS 7.0
我猜安装 libpng12.x86_64 会成功。但这是正常现象还是最新版本的 OpenJDK 有问题?
谢谢
libpng 1.2 的兼容包作为 libpng12
包的一部分提供。您可以使用 root 身份安装它:
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.
这实际上是一个已报告并修复的问题 post GA 版本。 AdoptOpenJDK 团队随后重新发布了 8u202-b08。
https://github.com/AdoptOpenJDK/openjdk-build/issues/851
所以有多个版本的 jdk8u202-b08。我下载了一个新版本,它运行良好,无需安装 libpng12。
我被告知新版本将包含一个 AdoptOpenJDK 特定的内部版本号以便能够区分。
我正在使用最新的 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.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.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.run(Toolkit.java:860)
at java.awt.Toolkit.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
- Centos 7.4
- CentOS 7.0
我猜安装 libpng12.x86_64 会成功。但这是正常现象还是最新版本的 OpenJDK 有问题?
谢谢
libpng 1.2 的兼容包作为 libpng12
包的一部分提供。您可以使用 root 身份安装它:
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.
这实际上是一个已报告并修复的问题 post GA 版本。 AdoptOpenJDK 团队随后重新发布了 8u202-b08。
https://github.com/AdoptOpenJDK/openjdk-build/issues/851
所以有多个版本的 jdk8u202-b08。我下载了一个新版本,它运行良好,无需安装 libpng12。
我被告知新版本将包含一个 AdoptOpenJDK 特定的内部版本号以便能够区分。