> For the complete documentation index, see [llms.txt](https://docs.openiam.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openiam.com/troubleshooting/logs-and-diagnostics/report-generation-issue.md).

# Error during report generating in RPM installations

Reports that fail to generate on an RPM deployment because the host has no fonts for the reporting engine to render with.

| Symptom                                                                                                                          | Likely cause                                                       | Resolution                                        |
| -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------- |
| A report does not generate, or is never emailed, and `catalina.out` reports a JasperReports font or class-initialization failure | The host has no font configuration for the reporting engine to use | Install the font packages and run headless, below |

## Symptom

In `/usr/local/openiam/ui/logs/catalina.out`, one of:

{% code overflow="wrap" %}

```
2022-11-10 10:04:20.287 ERROR 8345 --- [io-8080-exec-12] o.s.b.w.s.s.ErrorPageFilter              : Forwarding to error page from request [/api/reports] due to exception [Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser]

java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser
```

{% endcode %}

{% code overflow="wrap" %}

```
2022-11-11 11:13:15.715 ERROR 61056 --- [nio-8080-exec-5] n.s.j.e.f.SimpleFontExtensionHelper      : Error loading font family

net.sf.jasperreports.engine.fonts.InvalidFontException: Error loading font "net/sf/jasperreports/fonts/dejavu/DejaVuSans.ttf".
```

{% endcode %}

Both come from the same cause: the reporting engine cannot resolve fonts on this host. The first fails while initializing the text parser, the second while loading a specific family.

## Resolution

{% stepper %}
{% step %}
**Install font configuration and the DejaVu family.**

```bash
yum install fontconfig dejavu-sans-fonts
```

{% hint style="info" %}
Package names are the Enterprise Linux ones. Older copies of this procedure name `ttf-dejavu-extra`, which is a Debian package and does not exist in the EL repositories.
{% endhint %}
{% endstep %}

{% step %}
**Run the interface headless.** Add the flag to `JAVA_OPTS` in `/usr/local/openiam/ui/bin/catalina.sh`:

```bash
-Djava.awt.headless=true
```

Without it, the engine tries to reach a display that is not there on a server.
{% endstep %}

{% step %}
**Restart the interface.**

```bash
systemctl restart openiam-ui
```

{% endstep %}

{% step %}
**Generate the report again**, and read `catalina.out` if it still fails — a different exception means a different cause.
{% endstep %}
{% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.openiam.com/troubleshooting/logs-and-diagnostics/report-generation-issue.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
