Fontconfig error: Cannot load default config file (6.3.1)

0

Hello,

i am using jasperreports-6.3.1.jar together with jasperreports-fonts-6.3.1
Using in my Report the Font "DejaVu Serif".

On Windows 10 with JDK 1.8.0_111 everything runs fine.

But on my Linux Server (Synology NAS RS815+ DSM 6.0.2-8451 Update 6) with no head (is headless so no X11 connections and no fonts installed or something like that. I do not know it better.)
i got following error since there was some OS update and updates to JAVA JRE (1.8.0_101):

>../volume1/Jasper$ java -jar -Djava.awt.headless=true job.jar
 
Fontconfig error: Cannot load default config file
Exception in thread "main" net.sf.jasperreports.engine.JRRuntimeException: Error initializing graphic environment.
        at net.sf.jasperreports.engine.util.JRGraphEnvInitializer.initializeGraphEnv(JRGraphEnvInitializer.java:63)
        at net.sf.jasperreports.engine.fill.BaseReportFiller.<init>(BaseReportFiller.java:122)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:246)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:69)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57)
        at net.sf.jasperreports.engine.fill.JRFiller.createBandReportFiller(JRFiller.java:200)
        at net.sf.jasperreports.engine.fill.JRFiller.createReportFiller(JRFiller.java:215)
        at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:159)
        at net.sf.jasperreports.engine.JasperFillManager.fillToFile(JasperFillManager.java:159)
        at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:692)
        at me.diskstation.team42.jobs.amazon.MainAnalyser.createReport(MainAnalyser.java:129)
        at me.diskstation.team42.jobs.amazon.MainAnalyser.main(MainAnalyser.java:100)
Caused by: 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:201)
        at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:235)
        at sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:263)
        at sun.java2d.HeadlessGraphicsEnvironment.getAvailableFontFamilyNames(HeadlessGraphicsEnvironment.java:94)
        at net.sf.jasperreports.engine.util.JRGraphEnvInitializer.initializeGraphEnv(JRGraphEnvInitializer.java:57)
        ... 11 more
 

Please help!

THANKS!

steven_klein's picture
Joined: Feb 17 2016 - 12:52am
Last seen: 2 years 1 month ago

9 Answers:

0

[SOLVED]

It is running on all Java Versions again!

Java 7u79
Java 7u80
Java 8u111
Java 8u112

It seems to be a Synology specific issue of its tool "Java Manager" i deinstalled Java and reinstalled with no effect. But as i used the update function and downgraded to jdk-7u79-linux-i586.tar.gz it works again with all versions! No matter if jdk-7u79-linux-i586.tar.gz or jdk-7u79-linux-x64.tar.gz is installed.

Thanks!

steven_klein's picture
Joined: Feb 17 2016 - 12:52am
Last seen: 2 years 1 month ago
1

Did you set up font extensions? This usually happens if font jar file is not in the classpath.

http://community.jaspersoft.com/wiki/custom-font-font-extension

hozawa's picture
52282
Joined: Apr 24 2010 - 4:31pm
Last seen: 5 months 3 days ago
0

The font jar file is in the classpath as Library.

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path=""/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
...
<classpathentry kind="lib" path=".../Amazon XML Jobs/libs/jasperreports-fonts-6.3.1.jar"/>
...
<classpathentry kind="output" path="bin"/>
</classpath>
 
When i export my project to runnable Jar-File it contains the fonts. I can execute it in console under windows or in Tomcat via Webservice both runs fine.
But when i try it on Linux with no fonts installed it will not work.
 
Why he looks for a default config file in a folder like "usr/share/fonts/...." or "usr/share/fonts/truetype" ?
It is not there so dont look into it. How can i tell him not to search the OS for fonts?
 
THANKS!

 

steven_klein's picture
Joined: Feb 17 2016 - 12:52am
Last seen: 2 years 1 month ago
0

It's trying to find the font because it can't find it in jvm. You'll have to setup jasperreports font extension or set up the font in your jvm.

hozawa's picture
52282
Joined: Apr 24 2010 - 4:31pm
Last seen: 5 months 3 days ago
0

Hello hozawa,
thank you for your hint. I tried it with my own extension and had a little progress in troubleshooting! But i am still struggling.

Now i did following:

1. I followed the instructions of http://community.jaspersoft.com/wiki/custom-font-font-extension and used that font.

2. Replaced all occourences of fontName="*" in my "report.jrxml" with fontName="MyFontExtension" and compiled a new report.jasper file

3. Added the new jasper-file to my eclipse Project and hit run.

And got an error wich i was expecting. So far so good. He looks for my font extension!

Exception in thread "main" net.sf.jasperreports.engine.util.JRFontNotFoundException: Font "MyFontExtension" is not available to the JVM. See the Javadoc for more details.
at net.sf.jasperreports.engine.fonts.FontUtil.checkAwtFont(FontUtil.java:652)
...
 
4. Added the MyFonExtension.jar exported with Jaspersoft Studio to my eclipse project as external library and hit run again.
And it works on windows the pdf-file has the correct font!
 
5. Exported the project to runnable Jar and got 2 warnings. And i think this is the problem... but still not got the trick.
 
On Unix he now trys to find a font twice and fails. No exception but the pdf remains empty.
 
 
The locations of the jasperreports_extension.properties are:
 
MyFontExtension.jar
jasperreports-6.3.1.jar
 
Any idea?
 
THANKS!
 
steven_klein's picture
Joined: Feb 17 2016 - 12:52am
Last seen: 2 years 1 month ago
0

 jasperreports_extension.properties should have been generated. If you edit this file manually, you have to set net.sf.jasperreports.extension.simple.font.families to a unique key or you'll get duplicate error.

e.g.

net.sf.jasperreports.extension.simple.font.families.ireportfamily1482121183005=fonts/fontsfamily1482121183005.xml

hozawa's picture
52282
Joined: Apr 24 2010 - 4:31pm
Last seen: 5 months 3 days ago
0

Yes they are generated. I did not modify them. Could it be that the project export function is messing something up?

in "MyFonExtension" it says:

net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.ireportfamily1481974224157=fonts/fontsfamily1481974224157.xml
 
And in the API-JAR jasperreports-6.3.1.jar i am using it says:
 
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.default=net/sf/jasperreports/fonts/jasperreports-fonts.xml
 
 
steven_klein's picture
Joined: Feb 17 2016 - 12:52am
Last seen: 2 years 1 month ago
0

JasperReports 6.2.0 had a bug with font extensions but 6.3.1 should be alright. I'm using it on Ubuntu with Java8 and able to use font extensions.

Another thing I did with 6.2.0 (the one with a bug) was to manually add the fonts to jasperreports-font.jar instead of using font-extensions.

hozawa's picture
52282
Joined: Apr 24 2010 - 4:31pm
Last seen: 5 months 3 days ago
0

I installed Ubuntu on VirtualBox and installed tomcat7 with "sudo apt-get tomcat7".
I deployed my application and everything works fine.
 

I think it is something wrong with the other linux installation or because it is headless.

And is there a fonconfig.Linux.bfc or something like that missing?

steven_klein's picture
Joined: Feb 17 2016 - 12:52am
Last seen: 2 years 1 month ago
Feedback
randomness