Подтвердить что ты не робот

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

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

enter image description here

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

Есть ли у вас какие-либо идеи, почему это происходит?

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

У меня была эта проблема, и я обнаружил, что с помощью добавления отсутствующих 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)

Ответ 4

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

apt-get install ttf-dejavu-extra

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

< fontFamily name= "Arial" > <normal> < [CDATA [fonts/arial.ttf]] > </normal> <bold> < [CDATA [fonts/arialbd.ttf]] > </bold> <italic> < [CDATA [шрифты/ariali.ttf]] >
</наклонным >
<BoldItalic> <! [CDATA [шрифты/arialbi.ttf]] >
</BoldItalic>
<pdfEmbedded> <! [CDATA [истинно]] >
</pdfEmbedded> </FontFamily>
но это должно быть как:
< fontFamily name= "Arial" > <normal> < [CDATA [fonts/arial.ttf]] > < < < → > <bold> <! [CDATA [шрифты/arialbd.ttf]] > </жирный шрифт >
< наклонный > <! [CDATA [шрифты/ariali.ttf]] > </наклонный >
<BoldItalic> <!
[CDATA [шрифты/arialbi.ttf]] > </BoldItalic>
<pdfEmbedded> <!
[CDATA [истинно]] > </pdfEmbedded>
</FontFamily>
поэтому их было пробелом перед конечным тегом каждого тега в файле конфигурации. Я исправил его, удалив пространство между ними.

Ответ 11

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

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

Ответ 12

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

Я исправил его, обновив до java8.

Ответ 13

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

Ответ 14

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

В основном я случайно удалил папку temp в корне сервера. Так что jasper can not компилирует отчет и приступает к генерации отчета.

Ответ 15

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

Ответ 16

Для меня проблема AdoptOpenJDK ошибки в AdoptOpenJDK: https://github.com/AdoptOpenJDK/openjdk-build/issues/682

Я исправил проблему, установив ttf-dejavu вручную в моем файле Docker

FROM adoptopenjdk/openjdk8:alpine-jre

# Workaround for wrong font configuration in adoptopenjdk
# https://github.com/AdoptOpenJDK/openjdk-build/issues/682
RUN apk update && apk upgrade \
   && apk add --no-cache ttf-dejavu \
   # Install windows fonts as well. Not required..
   && apk add --no-cache msttcorefonts-installer \
   && update-ms-fonts && fc-cache -f

Ответ 17

Вы можете попробовать перейти на jdk7, это работает для меня.

извините мой английский!