Bug 1768935 - JRE created by jlink fails to start application - NoClassDefFoundError: Could not initialize class sun.font.SunFontManager
Summary: JRE created by jlink fails to start application - NoClassDefFoundError: Could...
Keywords:
Status: VERIFIED
Alias: None
Product: OpenJDK on Windows
Classification: Red Hat
Component: OpenJDK 11
Version: 11
Hardware: x86_64
OS: Windows
unspecified
high
Target Milestone: ---
Assignee: Radoslav Čáp
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-11-05 15:39 UTC by Joe Wright
Modified: 2022-09-11 23:08 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Joe Wright 2019-11-05 15:39:56 UTC
Description of problem:
- Font missing in openjdk packaging

Version-Release number of selected component (if applicable):
- 11

How reproducible:
- 100%

Steps to Reproduce:
- Download Windows OpenJDK 11 : https://access.redhat.com/jbossnetwork/restricted/softwareDetail.html?softwareId=74421&product=core.service.openjdk&version=&downloadType=distributions
- Unzip it to JAVA_HOME
- cd to JAVA_HOME/bin
- execute command: "jlink --no-header-files --no-man-pages --compress=2 --strip-debug --add-modules=java.base,jdk.attach,jdk.jfr,java.compiler,jdk.charsets,jdk.jlink,java.datatransfer,jdk.compiler,jdk.jshell,java.desktop,jdk.crypto.cryptoki,jdk.jsobject,java.instrument,jdk.crypto.ec,jdk.jstatd,java.logging,jdk.crypto.mscapi,jdk.localedata,java.management,jdk.dynalink,jdk.management.agent,java.management.rmi,jdk.editpad,jdk.management.jfr,java.naming,jdk.hotspot.agent,jdk.management,java.net.http,jdk.httpserver,jdk.naming.dns,java.prefs,jdk.internal.ed,jdk.naming.rmi,java.rmi,jdk.internal.jvmstat,jdk.net,java.scripting,jdk.internal.le,jdk.pack,java.se,jdk.internal.opt,jdk.rmic,java.security.jgss,jdk.internal.vm.ci,jdk.scripting.nashorn,java.security.sasl,jdk.internal.vm.compiler,jdk.scripting.nashorn.shell,java.smartcardio,jdk.internal.vm.compiler.management,jdk.sctp,java.sql,jdk.jartool,jdk.security.auth,java.sql.rowset,jdk.javadoc,jdk.security.jgss,java.transaction.xa,jdk.jcmd,jdk.unsupported.desktop,java.xml.crypto,jdk.jconsole,jdk.unsupported,java.xml,jdk.jdeps,jdk.xml.dom,jdk.accessibility,jdk.jdi,jdk.zipfs,jdk.aot,jdk.jdwp.agent --output java-runtime-all-mods
- this created a JRE image in the sub directory java-runtime-all-mods"
- Used this JRE image to launch the Swing application I provided in the attachment zip files using this command: "java-runtime-all-mods\bin\java -cp PATH_TO_MY_EXAMPLE_APPLICATION\helloworld-client-1.0-SNAPSHOT.jar com.zac.swing.hw.HelloWorldSwing"



Actual results:
Below error was seen in windows (Linux JDK ZIP of same version worked fine) :
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: Could not initialize class sun.font.SunFontManager
        at java.desktop/sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:265)
        at java.desktop/sun.swing.SwingUtilities2.getFontMetrics(SwingUtilities2.java:1243)
        at java.desktop/javax.swing.JComponent.getFontMetrics(JComponent.java:1646)
        at java.desktop/javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(BasicLabelUI.java:246)
        at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1680)
        at java.desktop/java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:724)
        at java.desktop/java.awt.Container.preferredSize(Container.java:1823)
        at java.desktop/java.awt.Container.getPreferredSize(Container.java:1807)
        at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1682)
        at java.desktop/javax.swing.JRootPane$RootLayout.preferredLayoutSize(JRootPane.java:866)
        at java.desktop/java.awt.Container.preferredSize(Container.java:1823)
        at java.desktop/java.awt.Container.getPreferredSize(Container.java:1807)
        at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1682)
        at java.desktop/java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:724)
        at java.desktop/java.awt.Container.preferredSize(Container.java:1823)
        at java.desktop/java.awt.Container.getPreferredSize(Container.java:1807)
        at java.desktop/java.awt.Window.pack(Window.java:826)
        at com.zac.swing.hw.HelloWorldSwing.createAndShowGUI(HelloWorldSwing.java:21)
        at com.zac.swing.hw.HelloWorldSwing$1.run(HelloWorldSwing.java:31)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)


Expected results:
- application runs normally

Additional info:

Comment 2 Alex Kashchenko 2019-11-13 17:17:18 UTC
Updated jdk11 build with the fix is published on customer portal: https://access.redhat.com/jbossnetwork/restricted/listSoftware.html?downloadType=distributions&product=core.service.openjdk&version=11.0.5.10-2

Comment 3 Radoslav Čáp 2020-05-07 17:37:02 UTC
Reproduced with openjdk-11.0.5.10 and sample jar from ticket:

C:\Users\tester\Desktop\java-11-openjdk-11.0.5.10-1.windows.redhat.x86_64\java-11-openjdk-11.0.5.10-1.windows.redhat.x86_64\bin>.\java-runtime-all-mods\bin\java -cp C:\Users\tester\Desktop\swing-helloworld-example\lib\helloworld-client-1.0-SNAPSHOT.jar com.zac.swing.hw.HelloWorldSwing
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: Could not initialize class sun.font.SunFontManager
        at java.desktop/sun.font.FontDesignMetrics.getMetrics(Unknown Source)
        at java.desktop/sun.swing.SwingUtilities2.getFontMetrics(Unknown Source)
        at java.desktop/javax.swing.JComponent.getFontMetrics(Unknown Source)
        at java.desktop/javax.swing.plaf.basic.BasicLabelUI.getPreferredSize(Unknown Source)
        at java.desktop/javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.desktop/java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
        at java.desktop/java.awt.Container.preferredSize(Unknown Source)
        at java.desktop/java.awt.Container.getPreferredSize(Unknown Source)
        at java.desktop/javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.desktop/javax.swing.JRootPane$RootLayout.preferredLayoutSize(Unknown Source)
        at java.desktop/java.awt.Container.preferredSize(Unknown Source)
        at java.desktop/java.awt.Container.getPreferredSize(Unknown Source)
        at java.desktop/javax.swing.JComponent.getPreferredSize(Unknown Source)
        at java.desktop/java.awt.BorderLayout.preferredLayoutSize(Unknown Source)
        at java.desktop/java.awt.Container.preferredSize(Unknown Source)
        at java.desktop/java.awt.Container.getPreferredSize(Unknown Source)
        at java.desktop/java.awt.Window.pack(Unknown Source)
        at com.zac.swing.hw.HelloWorldSwing.createAndShowGUI(HelloWorldSwing.java:21)
        at com.zac.swing.hw.HelloWorldSwing$1.run(HelloWorldSwing.java:31)
        at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
        at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)


On java-11-openjdk-11.0.7.10-1.windows.redhat.x86_64 was swing window rendered and displayed properly.


Note You need to log in before you can comment on or make changes to this bug.