[OpenJDK 2D-Dev] "java.lang.Error: Probable fatal error:No fonts found" does notshow on 11

Bernd Eckenfels ecki at zusammenkunft.net
Mon Mar 4 00:54:04 UTC 2019


Hello,

the number of variations of this exception keeps increasing. When I use the RHEL8 beta with ist java-1.8.0-openjdk-headless.x86_64 (which has no fontconfig.* files and the libfontconfig is not installed) I get:

[ecki at rhel8 ~]$ java -showversion FontTest
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

Are we headless? true
g = sun.java2d.HeadlessGraphicsEnvironment headless: true
Exception in thread "main" java.lang.NullPointerException
        at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
        at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
        at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
        at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
        at sun.font.SunFontManager$2.run(SunFontManager.java:431)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.SunFontManager.<init>(SunFontManager.java:376)
        at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
        at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at java.lang.Class.newInstance(Class.java:442)
        at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
        at sun.java2d.SunGraphicsEnvironment.getFontManagerForSGE(SunGraphicsEnvironment.java:190)
        at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:224)
        at sun.java2d.HeadlessGraphicsEnvironment.getAvailableFontFamilyNames(HeadlessGraphicsEnvironment.java:97)
        at FontTest.main(FontTest.java:15)

[ecki at rhel8 ~]$ ls /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181.b13-9.el8.x86_64/jre/lib/*font*
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181.b13-9.el8.x86_64/jre/lib/psfontj2d.properties  /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181.b13-9.el8.x86_64/jre/lib/psfont.properties.ja


-- 
http://bernd.eckenfels.net

Von: Bernd Eckenfels
Gesendet: Donnerstag, 28. Februar 2019 09:56
An: 2d-dev
Cc: Java Core Libs
Betreff: Re: "java.lang.Error: Probable fatal error:No fonts found" does notshow on 11

Hello,

I can confirm the same ugly error stack with 12-b33 EA, this time with debug:

$ jdk-12/bin/java -cp . -Dsun.java2d.debugfonts=true FontTest
Are we headless? true
g = sun.java2d.HeadlessGraphicsEnvironment headless: true
Feb 28, 2019 9:50:32 AM sun.awt.X11FontManager registerFontDir
INFO: ParseFontDir /home/vagrant/jdk-12/lib/fonts
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration <init>
INFO: Creating standard Font Configuration
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for text fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.RedHat.7.3.1611.properties
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for binary fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.RedHat.7.3.1611.bfc
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for text fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.RedHat.7.properties
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for binary fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.RedHat.7.bfc
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for text fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.RedHat.properties
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for binary fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.RedHat.bfc
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for text fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.7.3.1611.properties
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for binary fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.7.3.1611.bfc
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for text fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.7.properties
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for binary fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.7.bfc
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for text fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.properties
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for binary fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.bfc
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findFontConfigFile
INFO: Did not find a fontconfig file.
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration <init>
INFO: Creating standard Font Configuration
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for text fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.RedHat.7.3.1611.properties
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for binary fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.RedHat.7.3.1611.bfc
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for text fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.RedHat.7.properties
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for binary fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.RedHat.7.bfc
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for text fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.RedHat.properties
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for binary fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.RedHat.bfc
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for text fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.7.3.1611.properties
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for binary fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.7.3.1611.bfc
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for text fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.7.properties
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for binary fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.7.bfc
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for text fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.properties
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findImpl
INFO: Looking for binary fontconfig file : /home/vagrant/jdk-12/lib/fontconfig.bfc
Feb 28, 2019 9:50:32 AM sun.awt.FontConfiguration findFontConfigFile
INFO: Did not find a fontconfig file.
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no font for sans:regular:roman
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no font for sans:bold:roman
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no font for sans:regular:italic
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no font for sans:bold:italic
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no font for serif:regular:roman
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no font for serif:bold:roman
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no font for serif:regular:italic
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no font for serif:bold:italic
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no font for monospace:regular:roman
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no font for monospace:bold:roman
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no font for monospace:regular:italic
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no font for monospace:bold:italic
Feb 28, 2019 9:50:32 AM sun.font.FontConfigManager initFontConfigFonts
INFO: Fontconfig returned no fonts at all.
Feb 28, 2019 9:50:32 AM sun.font.FcFontConfiguration warning
WARNING: Failed to get info from libfontconfig
Feb 28, 2019 9:50:32 AM sun.font.FcFontConfiguration warning
WARNING: Failed to get info from libfontconfig
Exception in thread "main" java.lang.InternalError: java.lang.reflect.InvocationTargetException
       at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
       at java.base/java.security.AccessController.doPrivileged(AccessController.java:310)
       at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
       at java.desktop/sun.java2d.SunGraphicsEnvironment.getFontManagerForSGE(SunGraphicsEnvironment.java:189)
       at java.desktop/sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:223)
       at java.desktop/sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:251)
       at java.desktop/sun.java2d.HeadlessGraphicsEnvironment.getAvailableFontFamilyNames(HeadlessGraphicsEnvironment.java:75)


Gruss
Bernd
-- 
http://bernd.eckenfels.net
 

Von: Philip Race <philip.race at oracle.com>
Gesendet: Donnerstag, Februar 28, 2019 12:45 AM
An: Bernd Eckenfels; 2d-dev
Cc: awt-dev at openjdk.java.net; Java Core Libs
Betreff: Re: "java.lang.Error: Probable fatal error:No fonts found" does not show on 11 
 
Wrong list. You want 2d-dev. 

-phil. 

On 2/27/19, 3:26 PM, Bernd Eckenfels wrote: 
> Hello, 
> 
> (please let me know in case I picked the wrong list.) 
> 
> Since OpenJDK does not ship Default *.ttf font files the change that a JRE is installed in a way that no System Fonts can be found is quite high. 
> 
> In OpenJDK8 it is a bit unfortunate that in this situation even for the headless graphics context that you can can a Java.lang.Error: 
> 
> I wonder if this is intentional. How About returnign an empty Array or Maybe a RntimeException instead? In my case by upgrading from Oracle JRE to Open JDK (in my case Azul) a perfectly fine working Installation is not aborting. 
> 
> The JasperReports component used is failing does not even need the System Fonts (which I will report to them seperately). For Zulu it is enough to install Dejavu Fonts in System Directory or copy them to JRE/lib/fonts/, but I have also seen OpenJDK builds which seem to use fontmanager libraries instead of fixed file path. Here I guess the dependency on System config is even higher. 
> 
> I tested on a minimal System with no X11: 
> 
>> ls /usr/share/fonts 
>> cat /etc/centos-release 
> CentOS Linux release 7.3.1611 (Core) 
> 
> And my test program (below) Returns for Java 8: 
> 
>> zulu8*x64/bin/java -cp . FontTest 
> Are we headless? true 
> g = sun.java2d.HeadlessGraphicsEnvironment headless: true 
> Exception in thread "main" java.lang.Error: Probable fatal error:No fonts found. 
> at sun.font.SunFontManager.getDefaultPhysicalFont(SunFontManager.java:1236) 
> at sun.font.SunFontManager.initialiseDeferredFont(SunFontManager.java:1100) 
>> at sun.font.SunFontManager.getDefaultPhysicalFont(SunFontManager.java:1220) 
> at sun.font.SunFontManager.initialiseDeferredFont(SunFontManager.java:1100) 
> at sun.font.SunFontManager.initialiseDeferredFonts(SunFontManager.java:927) 
> at sun.font.SunFontManager.loadFonts(SunFontManager.java:3302) 
> at sun.awt.X11FontManager.loadFonts(X11FontManager.java:466) 
> at sun.font.SunFontManager.loadFontFiles(SunFontManager.java:3429) 
> at sun.font.SunFontManager.getInstalledFontFamilyNames(SunFontManager.java:3766) 
> at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:225) 
> at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:252) 
> at sun.java2d.HeadlessGraphicsEnvironment.getAvailableFontFamilyNames(HeadlessGraphicsEnvironment.java:94) 
> at FontTest.main(FontTest.java:15) 
> 
> So the error in itself is one topic I wanted to inquire About. However, even worse in OpenJDK 11 the error seems to have degenerated quite a bit, it Looks for me: 
> 
>> zulu11*x64/bin/java -cp . FontTest 
> Are we headless? true 
> g = sun.java2d.HeadlessGraphicsEnvironment headless: true 
> Exception in thread "main" java.lang.InternalError: java.lang.reflect.InvocationTargetException 
> at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86) 
> at java.base/java.security.AccessController.doPrivileged(Native Method) 
> at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74) 
> at java.desktop/sun.java2d.SunGraphicsEnvironment.getFontManagerForSGE(SunGraphicsEnvironment.java:189) 
> at java.desktop/sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:223) 
> at java.desktop/sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:251) 
> at java.desktop/sun.java2d.HeadlessGraphicsEnvironment.getAvailableFontFamilyNames(HeadlessGraphicsEnvironment.java:75) 
> at FontTest.main(FontTest.java:15) 
> Caused by: java.lang.reflect.InvocationTargetException 
> at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
> at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
> at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
> at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) 
> at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84) 
> ... 7 more 
> Caused by: java.lang.NullPointerException 
> at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262) 
> at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225) 
> at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107) 
> at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719) 
> at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367) 
> at java.base/java.security.AccessController.doPrivileged(Native Method) 
> at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312) 
> at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35) 
> at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56) 
> ... 12 mor 
> 
> If there is no known issue for that, is it worth to file a Bug for it? (I Need to recreate it with a Oracle OpenJDK binary yet if it is only a fontconfig Problem – but in that case a null check is probably also a good thing?) 
> 
> Gruss 
> Bernd 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/2d-dev/attachments/20190304/9acdcd0d/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: EA6736986DA24584AAEEB117A4BC8FAA.png
Type: image/png
Size: 144 bytes
Desc: not available
URL: <https://mail.openjdk.java.net/pipermail/2d-dev/attachments/20190304/9acdcd0d/EA6736986DA24584AAEEB117A4BC8FAA-0001.png>


More information about the 2d-dev mailing list