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
Stop Confluence (stop all nodes if clustered)
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}"
Repeat step 2 for all nodes (if clustered)
Start Confluence (one node at a time if clustered)
Windows (not running as a Windows Service)
Stop Confluence (stop all nodes if clustered)
Add the following in <confluence-installation>\bin\setenv.bat
1
set CATALINA_OPTS="@$CATALINA_HOME\confluence\WEB-INF\jpms-args.txt" %CATALINA_OPTS%
Repeat step 2 for all nodes (if clustered)
Start Confluence (one node at a time if clustered)
Windows Service
Stop service (stop service for all nodes if clustered)
Follow the steps in Setting properties for Windows services via command line
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
Repeat step 3 for all nodes (if clustered)
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.
Was this helpful?