Skip to content

Fontconfig head is null, check your fonts or fonts configuration.

0

I'm new in aws ec2, I don't know if here is the correct place to put this question but after some problems with use of my ec2 I will post my question here. I've an application in java with mysql, javascript, jsp, Jasper reports the problem is precisely with jasper reports because my application don't generate the report because error of fonts, I did the installation of "libconfig1" in my ec2 linux but the problem still ocurring realy I don't know if here is the place but the "aws" is a special and different wolrd. errror log: 18-Nov-2024 11:06:15.825 SEVERE [http-nio-8080-exec-3480] net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit> Error while loading available fonts java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1263) at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:221) at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:105) at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:696) at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:352) at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:309) at java.base/java.security.AccessController.doPrivileged(AccessController.java:319) at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:309) at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35) at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:55) at java.desktop/sun.font.PlatformFontInfo.createFontManager(PlatformFontInfo.java:37) at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:51) at java.desktop/java.awt.Font.<init>(Font.java:642) at java.desktop/java.awt.Font.createFont(Font.java:1247) at net.sf.jasperreports.engine.fonts.AwtFontManager.getAwtFont(AwtFontManager.java:89) at net.sf.jasperreports.engine.fonts.SimpleFontFace.loadFont(SimpleFontFace.java:181) at net.sf.jasperreports.engine.fonts.SimpleFontFace.setTtf(SimpleFontFace.java:162) at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFace(SimpleFontExtensionHelper.java:390) at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamily(SimpleFontExtensionHelper.java:311) at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontExtensions(SimpleFontExtensionHelper.java:259) at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontExtensions(SimpleFontExtensionHelper.java:230) at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontExtensions(SimpleFontExtensionHelper.java:187) at net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.ensureFontExtensions(FontExtensionsRegistry.java:93) at net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.getExtensions(FontExtensionsRegistry.java:57) at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:134) at net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:86) at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:114) at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:82) at net.sf.jasperreports.engine.fill.JRFiller.createBandReportFiller(JRFiller.java:251) at net.sf.jasperreports.engine.fill.JRFiller.createReportFiller(JRFiller.java:272) at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:114) at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:103) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:530) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:954) at itc.systems.itcmedbr.ListAgenda_Hemo_S001.doPost(ListAgenda_Hemo_S001.java:114) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:663) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) Thanks in advanced.

asked 2 years ago3.8K views

3 Answers
0
Accepted Answer

The issue you're experiencing with Jasper Reports on your AWS EC2 instance is related to font configuration. This is a common problem when running Java applications that rely on system fonts in a Linux environment.

To resolve this issue, you need to ensure that the necessary fonts are installed and properly configured on your EC2 instance. Here are some steps you can try:

  1. Install the required fonts: Run the following command to install a set of common fonts: sudo apt-get install fonts-liberation

  2. Update the font cache: After installing the fonts, update the font cache by running: sudo fc-cache -f -v

  3. Install additional font packages: You may need to install more font packages, such as: sudo apt-get install fontconfig sudo apt-get install msttcorefonts

  4. Verify font configuration: Check if the fonts are properly recognized by running: fc-list

  5. Restart your Java application or the entire EC2 instance to ensure the changes take effect.

If the problem persists, you may need to specify the font directory explicitly in your Java application. You can do this by adding the following system property when starting your Java application:

-Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.library.path=/usr/share/fonts/truetype

Make sure to adjust the path if your fonts are located in a different directory.

If you're still encountering issues after trying these steps, you may need to investigate further by checking your application's font configuration files and ensuring they are correctly set up for your EC2 environment.
Sources
Access AWS EC2 Instance ubuntu by ssh losted. | AWS re:Post

answered 2 years ago

EXPERT

reviewed 2 years ago

0

The issue with Jasper Reports on your AWS EC2 instance arises from missing or improperly configured fonts, which is common when Java applications rely on system fonts in Linux environments.

EXPERT

answered 2 years ago

0

I did all that you send me but problem still the same. Result of fc-cache -f -v:

sudo fc-cache -f -v
Font directories:
        /root/.local/share/fonts
        /usr/local/share/fonts
        /usr/share/fonts
        /root/.fonts
        /usr/share/fonts/X11
        /usr/share/fonts/truetype
        /usr/share/fonts/X11/encodings
        /usr/share/fonts/X11/util
        /usr/share/fonts/truetype/dejavu
        /usr/share/fonts/truetype/liberation
        /usr/share/fonts/truetype/msttcorefonts
        /usr/share/fonts/X11/encodings/large
/root/.local/share/fonts: skipping, no such directory
/usr/local/share/fonts: caching, new cache contents: 0 fonts, 0 dirs
/usr/share/fonts: caching, new cache contents: 0 fonts, 2 dirs
/usr/share/fonts/X11: caching, new cache contents: 0 fonts, 2 dirs
/usr/share/fonts/X11/encodings: caching, new cache contents: 0 fonts, 1 dirs
/usr/share/fonts/X11/encodings/large: caching, new cache contents: 0 fonts, 0 dirs
/usr/share/fonts/X11/util: caching, new cache contents: 0 fonts, 0 dirs
/usr/share/fonts/truetype: caching, new cache contents: 0 fonts, 3 dirs
/usr/share/fonts/truetype/dejavu: caching, new cache contents: 6 fonts, 0 dirs
/usr/share/fonts/truetype/liberation: caching, new cache contents: 16 fonts, 0 dirs
/usr/share/fonts/truetype/msttcorefonts: caching, new cache contents: 60 fonts, 0 dirs
/root/.fonts: skipping, no such directory
/usr/share/fonts/X11: skipping, looped directory detected
/usr/share/fonts/truetype: skipping, looped directory detected
/usr/share/fonts/X11/encodings: skipping, looped directory detected
/usr/share/fonts/X11/util: skipping, looped directory detected
/usr/share/fonts/truetype/dejavu: skipping, looped directory detected
/usr/share/fonts/truetype/liberation: skipping, looped directory detected
/usr/share/fonts/truetype/msttcorefonts: skipping, looped directory detected
/usr/share/fonts/X11/encodings/large: skipping, looped directory detected
/var/cache/fontconfig: cleaning cache directory
/root/.cache/fontconfig: not cleaning non-existent cache directory
/root/.fontconfig: not cleaning non-existent cache directory
fc-cache: succeeded

My application:

System.getProperty("-Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.library.path=/usr/share/fonts/truetype");

answered 2 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.