it-swarm-ru.tech

Не удалось инициализировать класс net.sf.jasperreports.engine.util.JRStyledTextParser

Я пытаюсь отобразить свои отчеты в браузере, но получаю эту ошибку:

enter image description here

странно то, что это происходит только тогда, когда я пытаюсь сгенерировать отчеты из версии, установленной на сервере, а не когда я делаю это локально с моего компьютера. 

Ты хоть представляешь, почему это происходит?

16
eddy

Это похоже на проблему безголового режима. Вам необходимо установить для свойства Java.awt.headless значение true. Это можно сделать с помощью:

static {
    System.setProperty("Java.awt.headless", "true");
}

Или, установив свойство headless в команде запуска Tomcat как -Djava.awt.headless=true

Кроме того, вы можете прочитать больше о том, почему это необходимо, вы можете прочитать о режиме без головы здесь

7
Master.Aurora

Это также может быть вызвано отсутствием/недоступностью каталога «temp» Java. В Font.Java создаются временные файлы:

Files.createTempFile("+~JF", ".tmp").toFile();

В одной системе в папке Tomcat отсутствовал каталог 'temp', но Java был настроен для его использования:

-Djava.io.tmpdir=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\temp

КСТАТИ. в первый раз, после перезапуска Tomcat, сервис фактически выдавал IOException, но затем JasperReports что-то кешировал, и при последующих вызовах трассировка стека была именно такой, как здесь описано.

7
Stepan

Это недостающие банки в проблеме пути к классам.

У меня была эта проблема, и я обнаружил, что с помощью добавления отсутствующих jar-файлов в путь к классам это решило проблему.

Из приведенной ниже статьи Статья на Java.dzone.com Я обнаружил, что минимальные необходимые банки ... Сейчас номера версий изменились, но только с этими библиотеками мне удалось заставить его работать.

  • jasperReports-2.0.4.jar
  • обще-варочного-1.7.jar
  • commons-collection-2.1.jar (commons-collection.jar)
  • обще-каротаж 1.0.2.jar
  • обще-beanutils.jar 
  • iText-2.0.7.jar (используется экспорт PDF)
5
Mark Ellul

Для тех, кто все еще сталкивается с этой проблемой: на Ubuntu Server 12.04 с JRE без JJ OpenJDK, это было просто решено

apt-get install ttf-dejavu-extra
5
zwets

Чтобы решить проблему, сделайте следующее:

  1. Переключился с Open JDK на Sun JDK
  2. Установленные шрифты MS Core
  3. Пакетная библиотека JasperReport Jar с приложением
4
Isnah

это могут быть проблемы с памятью, перезагрузите сервер.

4
fernando

Я получил эту ошибку при развертывании приложения Springboot (включая отчеты Jasper) в Docker-контейнере. Проблема была в openjdk: 8-jdk-Alpine , который я использовал для создания среды контейнера Docker. Это ошибка в поддержке шрифтов. Поэтому я переключился на openjdk: 8-jre (или версии OpenJDK 7 также помогут), и у меня это сработало. Я потратил несколько дней, чтобы исправить эту ошибку.

3
Isuru Nuwanthilaka

Немного поздно, но вот почему у нас возникла эта проблема ... Мы недавно начали разрабатывать с IntelliJ вместо Eclipse. Мы просто забыли запустить IntelliJ в качестве администратора ... Мы делали это с Eclipse уже давно, но просто не думали об этом с IntelliJ ........ В конце концов, я думаю, шрифты не были найдены или папка не была найдена, так как на диске c было недостаточно прав для чтения/записи.

1
Valentin Grégoire

В моем случае проблема была с jdk8, который я использовал для создания образа докера, но после некоторого поиска я переключился на jre. Это исправило мою ошибку. Я думаю, что вы можете попробовать любое изображение, а не использовать JDK8.

0
Isuru Nuwanthilaka

Я искал несколько часов для той же самой проблемы, и мое решение не является ни одним из других упомянутых.

Из-за плохого обновления моей версии отчетов jasper у меня было несколько версий файла jar jasperreports на моем пути к классам. Убедитесь, что у вас есть только один файл jar jasperreports ...

0
W. Goeman

В нашем случае это помогло удалить временный сервер (таким образом удостоверившись, что нет дубликатов jar) и перезапустить сервер . Подсказка: попробуйте это в случае, если ошибка начинает возникать после нового выпуска (но работала раньше и ничего не изменилось в выпуске)

0
Josef Bodnar

Я столкнулся с той же проблемой на моей машине для разработки. В основном это произошло из-за проблемы на сервере приложений ( Apache Tomcat )

Обычно я случайно удалил папку " temp " в корневом каталоге сервера. Так что Джаспер не может скомпилировать отчет и приступить к генерации отчета. 

0
Chinthaka Dinadasa

Получил ту же ошибку - очевидно, JRStyledTextParser использует зависимость от xml-apis Добавляя xml-apis, я исправил

<dependency>
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version>
</dependency>
0
Denys

В моем случае я использовал Arial шрифты для этого я настроил arial шрифты в irfonts.xml , Как было показано ниже

<fontFamily name = "Arial">
<Нормальный> <! [CDATA [Шрифты/arial.ttf]]> </ Нормальный>
<Полужирный> <! [CDATA [Шрифты/arialbd.ttf]]>
</ Полужирный>
<Курсив> <! [CDATA [Шрифты/ariali.ttf]]>
</ Наклонным>
<BoldItalic> <! [CDATA [Шрифты/arialbi.ttf]]>
</ BoldItalic>
<PdfEmbedded> <! [CDATA [правда]]>
</ PdfEmbedded> </ FontFamily>
но это должно быть похоже на: 
<fontFamily name = "Arial">
<Нормальный> <! [CDATA [Шрифты/arial.ttf]]> <
/ Нормальный>
<Полужирный> <! [CDATA [Шрифты/arialbd.ttf]]> </ полужирный>
<Курсив> <! [CDATA [Шрифты/ariali.ttf]]> </ наклонный>
<BoldItalic> <!
[CDATA [Шрифты/arialbi.ttf]]> </ BoldItalic>
<PdfEmbedded> <!
[CDATA [правда]]> </ pdfEmbedded>
</ FontFamily>
Таким образом, они были пробелом перед конечным тегом каждого тега в вышеуказанном файле конфигурации.
я исправил это, убрав пространство между ними.

0
user2870979

Это может помочь, у меня была та же ошибка, и любое другое решение не работало.

Я исправил это путем обновления до Java8.

0
plrenaudin