JDK-8139225 : Graphic Library(sun.font.FontScaler) doesn't load on Solaris 11 Sparc
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 8u60
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: solaris_11
  • CPU: sparc
  • Submitted: 2015-08-28
  • Updated: 2016-02-04
  • Resolved: 2016-02-04
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
1.8.0_60 sparc

ADDITIONAL OS VERSION INFORMATION :

                            Oracle Solaris 11.1 SPARC
  Copyright (c) 1983, 2012, Oracle and/or its affiliates.  All rights reserved.
                           Assembled 19 September 2012


A DESCRIPTION OF THE PROBLEM :
	Graphics2D getFontMetrics() is not working.

	Graphics2D metricsProvider = (Graphics2D) new BufferedImage(1,1,1).getGraphics();
	    System.out.println("metricsProvider.getFontMetrics():-> ");
		System.out.println(metricsProvider.getFontMetrics());

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run the following code on Solaris 11

	Graphics2D getFontMetrics() is not working.

	Graphics2D metricsProvider = (Graphics2D) new BufferedImage(1,1,1).getGraphics();
	    System.out.println("metricsProvider.getFontMetrics():-> ");
		System.out.println(metricsProvider.getFontMetrics());

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
getFontMetrics() should work.
ACTUAL -
Exception in thread "main" java.lang.UnsatisfiedLinkError: /opt/coldfusionraijin/jre1.8.0_60/lib/sparcv9/libt2k.so: ld.so.1: java: fatal: libXext.so.0: open failed: No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1842)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at sun.font.T2KFontScaler$1.run(T2KFontScaler.java:50)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.T2KFontScaler.<clinit>(T2KFontScaler.java:41)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at sun.font.FontScaler.<clinit>(FontScaler.java:100)
        at sun.font.TrueTypeFont.getScaler(TrueTypeFont.java:1281)
        at sun.font.FileFontStrike.<init>(FileFontStrike.java:179)
        at sun.font.FileFont.createStrike(FileFont.java:95)
        at sun.font.Font2D.getStrike(Font2D.java:359)
        at sun.font.Font2D.getStrike(Font2D.java:308)
        at sun.font.CompositeStrike.getStrikeForSlot(CompositeStrike.java:78)
        at sun.font.CompositeStrike.getFontMetrics(CompositeStrike.java:93)
        at sun.font.FontDesignMetrics.initMatrixAndMetrics(FontDesignMetrics.java:359)
        at sun.font.FontDesignMetrics.<init>(FontDesignMetrics.java:350)
        at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:302)
        at sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:855)
        at FontTest.main(FontTest.java:12)
root@see-sv-a007:~# /opt/coldfusionraijin/jre1.8.0_60/bin/java -jar /opt/coldfusionraijin//FontTest1.jar
Java HotSpot(TM) 64-Bit Server VM warning: PICL (libpicl.so.1) is missing. Performance will not be optimal.
Exception in thread "main" java.lang.UnsatisfiedLinkError: /opt/coldfusionraijin/jre1.8.0_60/lib/sparcv9/libt2k.so: ld.so.1: java: fatal: libXext.so.0: open failed: No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1842)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at sun.font.T2KFontScaler$1.run(T2KFontScaler.java:50)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.T2KFontScaler.<clinit>(T2KFontScaler.java:41)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at sun.font.FontScaler.<clinit>(FontScaler.java:100)
        at sun.font.TrueTypeFont.getScaler(TrueTypeFont.java:1281)
        at sun.font.FileFontStrike.<init>(FileFontStrike.java:179)
        at sun.font.FileFont.createStrike(FileFont.java:95)
        at sun.font.Font2D.getStrike(Font2D.java:359)
        at sun.font.Font2D.getStrike(Font2D.java:308)
        at sun.font.CompositeStrike.getStrikeForSlot(CompositeStrike.java:78)
        at sun.font.CompositeStrike.getFontMetrics(CompositeStrike.java:93)
        at sun.font.FontDesignMetrics.initMatrixAndMetrics(FontDesignMetrics.java:359)
        at sun.font.FontDesignMetrics.<init>(FontDesignMetrics.java:350)
        at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:302)
        at sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:855)
        at FontTest.main(FontTest.java:12)


ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "main" java.lang.UnsatisfiedLinkError: /opt/coldfusionraijin/jre1.8.0_60/lib/sparcv9/libt2k.so: ld.so.1: java: fatal: libXext.so.0: open failed: No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1842)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at sun.font.T2KFontScaler$1.run(T2KFontScaler.java:50)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.T2KFontScaler.<clinit>(T2KFontScaler.java:41)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at sun.font.FontScaler.<clinit>(FontScaler.java:100)
        at sun.font.TrueTypeFont.getScaler(TrueTypeFont.java:1281)
        at sun.font.FileFontStrike.<init>(FileFontStrike.java:179)
        at sun.font.FileFont.createStrike(FileFont.java:95)
        at sun.font.Font2D.getStrike(Font2D.java:359)
        at sun.font.Font2D.getStrike(Font2D.java:308)
        at sun.font.CompositeStrike.getStrikeForSlot(CompositeStrike.java:78)
        at sun.font.CompositeStrike.getFontMetrics(CompositeStrike.java:93)
        at sun.font.FontDesignMetrics.initMatrixAndMetrics(FontDesignMetrics.java:359)
        at sun.font.FontDesignMetrics.<init>(FontDesignMetrics.java:350)
        at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:302)
        at sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:855)
        at FontTest.main(FontTest.java:12)
root@see-sv-a007:~# /opt/coldfusionraijin/jre1.8.0_60/bin/java -jar /opt/coldfusionraijin//FontTest1.jar
Java HotSpot(TM) 64-Bit Server VM warning: PICL (libpicl.so.1) is missing. Performance will not be optimal.
Exception in thread "main" java.lang.UnsatisfiedLinkError: /opt/coldfusionraijin/jre1.8.0_60/lib/sparcv9/libt2k.so: ld.so.1: java: fatal: libXext.so.0: open failed: No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1842)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at sun.font.T2KFontScaler$1.run(T2KFontScaler.java:50)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.T2KFontScaler.<clinit>(T2KFontScaler.java:41)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at sun.font.FontScaler.<clinit>(FontScaler.java:100)
        at sun.font.TrueTypeFont.getScaler(TrueTypeFont.java:1281)
        at sun.font.FileFontStrike.<init>(FileFontStrike.java:179)
        at sun.font.FileFont.createStrike(FileFont.java:95)
        at sun.font.Font2D.getStrike(Font2D.java:359)
        at sun.font.Font2D.getStrike(Font2D.java:308)
        at sun.font.CompositeStrike.getStrikeForSlot(CompositeStrike.java:78)
        at sun.font.CompositeStrike.getFontMetrics(CompositeStrike.java:93)
        at sun.font.FontDesignMetrics.initMatrixAndMetrics(FontDesignMetrics.java:359)
        at sun.font.FontDesignMetrics.<init>(FontDesignMetrics.java:350)
        at sun.font.FontDesignMetrics.getMetrics(FontDesignMetrics.java:302)
        at sun.java2d.SunGraphics2D.getFontMetrics(SunGraphics2D.java:855)
        at FontTest.main(FontTest.java:12)


REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
import java.io.*;

import java.awt.*;
import java.awt.image.BufferedImage;

public class FontTest {

	public static void main(String[] args) {
		
		Graphics2D metricsProvider = (Graphics2D) new BufferedImage(1,1,1).getGraphics();
	    System.out.println("metricsProvider.getFontMetrics():-> ");
		System.out.println(metricsProvider.getFontMetrics());
		
		/*
		System.setProperty("java.awt.headless", "true");
		System.out.println("java.awt.headless=true");
		System.out.println(metricsProvider.getFont());
		System.out.println();
		
		System.setProperty("java.awt.headless", "false");
		System.out.println("java.awt.headless=false");
		System.out.println(metricsProvider.getFont());
		*/
		
	}

}

---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
No workaround


Comments
I believe the submitter is probably using headless which make this a duplicate of JDK-8130938 which is fixed in 8u66.
04-02-2016

Is this headful or headless ? If headful you absolutely need to install all the X11 libraries so you are missing something. If no Xserver (and DISPLAY is not defined) then it may be a dup of a bug which will be fixed in 8u66: https://bugs.openjdk.java.net/browse/JDK-8130938 Please confirm ..
08-10-2015

Moving to JDK project. Has a potential test case. Setting Fix/Version to JDK 9 for Dev evaluation. Will consider N-bp as needed.
08-10-2015