Fonts health check failed in Confluence 8 with Java 17

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

In Confluence Data Center 8 with Java 17, "The Fonts health check has failed in your system" appears in the UI. A system property may be missing.

Solution

Log file details

This error appears in atlassian-confluence.log:

1 2023-08-01 07:34:10,500 WARN [Caesium-1-1] [troubleshooting.healthcheck.concurrent.SupportHealthCheckProcess] lambda$getCompletedStatuses$0 Health check 'Fonts' failed with severity 'warning': 'System fonts are not available. Please make sure correct font packages are installed.'

Missing system property

There are a few possible causes:

  • The setenv file was overwritten

  • The JPMS arguments have been commented out

  • There are missing parameters from Java 9 Options when running as a Windows service

Linux

  1. Stop Confluence (stop all nodes if clustered)

  2. Add the following in <confluence-installation>/bin/setenv.sh

    1 2 # Add various JPMS arguments to allow Confluence to work on Java 17 CATALINA_OPTS="@$CATALINA_HOME/confluence/WEB-INF/jpms-args.txt ${CATALINA_OPTS}"
  3. Repeat step 2 for all nodes (if clustered)

  4. Start Confluence (one node at a time if clustered)

Windows (not running as a Windows Service)

  1. Stop Confluence (stop all nodes if clustered)

  2. Add the following in <confluence-installation>\bin\setenv.bat

    1 set CATALINA_OPTS="@$CATALINA_HOME\confluence\WEB-INF\jpms-args.txt" %CATALINA_OPTS%
  3. Repeat step 2 for all nodes (if clustered)

  4. Start Confluence (one node at a time if clustered)

Windows Service

  1. Stop service (stop service for all nodes if clustered)

  2. Follow the steps in Setting properties for Windows services via command line

  3. At the Java tab, add the following under the Java 9 section

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.jar=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.http=ALL-UNNAMED --add-opens=java.base/sun.net.www.protocol.https=ALL-UNNAMED --add-opens=java.base/sun.util.locale=ALL-UNNAMED --add-opens=java.management/javax.management=ALL-UNNAMED --add-exports=java.base/sun.security.action=ALL-UNNAMED --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-exports=java.xml/com.sun.org.apache.xml.internal.utils=ALL-UNNAMED --add-exports=java.desktop/sun.font=ALL-UNNAMED --add-exports=java.base/sun.security.util=ALL-UNNAMED
  4. Repeat step 3 for all nodes (if clustered)

  5. Start service (one node at a time if clustered)

ℹ️Do not copy the old setenv.sh/setenv.bat from previous versions but apply the above custom changes into the new setenv.sh/setenv.bat file shipped with Confluence 8.0 or later.

Updated on April 2, 2025

Still need help?

The Atlassian Community is here for you.