Исключение JasperReports NoClassDefFoundError в net.sf.jasperreports.engine.util.JRStyledTextParser - PullRequest
26 голосов
/ 02 сентября 2010

При попытке экспорта в WebLogic 11g выдается исключение NoClassDefFound. Я проверил приложение WAR и jasperreports-3.7.4.jar находится в папке WEB-INF / lib. В чем ошибка?

StackTrace

java.lang.NoClassDefFoundError: сеть / SF / JasperReports / двигатель / Util / JRStyledTextParser в net.sf.jasperreports.engine.fill.JRBaseFiller. (JRBaseFiller.java:181) в net.sf.jasperreports.engine.fill.JRVerticalFiller. (JRVerticalFiller.java:76) в net.sf.jasperreports.engine.fill.JRVerticalFiller. (JRVerticalFiller.java:86) в net.sf.jasperreports.engine.fill.JRVerticalFiller. (JRVerticalFiller.java:56) в net.sf.jasperreports.engine.fill.JRFiller.createFiller (JRFiller.java:142) в net.sf.jasperreports.engine.fill.JRFiller.fillReport (JRFiller.java:78) в net.sf.jasperreports.engine.JasperFillManager.fillReport (JasperFillManager.java:624) в org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.fillReport (AbstractJasperReportsView.java:676) на

Ответы [ 8 ]

32 голосов
/ 06 сентября 2010

Наконец-то у меня все работает.Я обнаружил корневое исключение, которое было сгенерировано перед NoClassDefFoundError: net / sf / jasperreports / engine / util / JRStyledTextParser:

java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment

Классы Sun AWT в Unix и Linux зависят от системы X Window.Когда вы используете эти классы, они ожидают загрузки библиотек X-клиента и смогут общаться с сервером X-дисплея.Это имеет смысл, если у вашего клиента есть графический интерфейс;к сожалению, это требуется, даже если ваш клиент использует AWT, но не имеет графического интерфейса пользователя (в моем случае это создание отчета из веб-приложения)

Чтобы обойти это, нужно установить системное свойство java.awt.headless=trueпри запуске системы.

4 голосов
/ 30 апреля 2013

У меня возникла та же проблема, и мы решили ее, установив пакеты шрифтов xorg вместе со шрифтами ttf.

2 голосов
/ 03 февраля 2012

Исключение разбора текста означает, что шрифт не был распознан. Я потратил целый день, пытаясь понять, почему, а затем, наконец, я решил эту проблему, используя текст SansSerif В Linux только несколько шрифтов могут быть проанализированы. Надеясь помог, С наилучшими пожеланиями

1 голос
/ 07 сентября 2012

У нас была похожая проблема. мы решили это, используя jar-файл jasper.

java.awt.headless=true

у нас не работает.

0 голосов
/ 19 марта 2019

Как только у вас возникнет эта проблема, поиск в Google приведет вас сюда.Для меня проблема была Jdk 11.2.

Caused by: java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
        at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
        ... 85 more
Caused by: java.lang.NullPointerException
        at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
        at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
        at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
        at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
        at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
        at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
        at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
        ... 90 more
java.lang.InternalError: java.lang.reflect.InvocationTargetException
        at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
        at java.desktop/sun.java2d.SunGraphicsEnvironment.getFontManagerForSGE(SunGraphicsEnvironment.java:189)
        at java.desktop/sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:223)
        at java.desktop/sun.java2d.SunGraphicsEnvironment.getAvailableFontFamilyNames(SunGraphicsEnvironment.java:251)
        at java.desktop/sun.java2d.HeadlessGraphicsEnvironment.getAvailableFontFamilyNames(HeadlessGraphicsEnvironment.java:75)
        at net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:94)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:110)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:69)
        at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57)
        at net.sf.jasperreports.engine.fill.JRFiller.createBandReportFiller(JRFiller.java:200)
        at net.sf.jasperreports.engine.fill.JRFiller.createReportFiller(JRFiller.java:215)
        at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:115)
        at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:667)

Решения пробовали

  • Локально работали с JDK 11.02.Нет проблем.Поскольку проблемы возникают в системах Linux 64
  • Запущено на сервере -Djava-awt.headeless = true, как предлагают некоторые пользователи.Проблема по-прежнему остается.

Причина возникновения этой проблемы заключается в том, что поддержка определенных шрифтов была удалена

Из примечаний к выпуску Oracle https://www.oracle.com/technetwork/java/javase/11-relnote-issues-5012449.html#Removed

УдалениеLucida Fonts из Oracle JDK Oracle JDK больше не поставляет шрифты и полностью полагается на шрифты, установленные в операционной системе.

Это означает, что шрифты в семействе Bigelow & Holmes Lucida (Lucida Sans, Lucida Bright и Lucida Typewriter)) больше не доступны для приложений из JDK.

Если приложения используют шрифты, поставляемые в JDK, их может потребоваться обновить.

Если системные администраторы работают с серверными приложениями Java, которые полагаются нана шрифтах, поставляемых в JDK, а не на пакетах системных шрифтов, приложения могут не запускаться до тех пор, пока не будут установлены пакеты системных шрифтов.

Вернитесь к предыдущей версии JDK или попробуйте обновить Jasper..

0 голосов
/ 26 января 2018

Столкнулся с этой проблемой несколько раз, и у меня есть решение.Эта ошибка возникает из-за недостатка места на диске ... Вы можете попробовать решить следующие проблемы: (i) Освободите место в папке tmp (ii) Удалите ненужные файлы на диске, чтобы освободить место.

Удачи .. Надеюсь .. это должно решить вашу проблему

0 голосов
/ 27 декабря 2016

У меня была та же проблема, и она была решена путем уменьшения пространства / tmp.Это было 100% (папка / tmp).Я уменьшил его до 86% и перезапустил сервер, и ошибка noclassdefinitioner исчезла, и проблема была решена.

0 голосов
/ 10 июля 2015

Вы получаете ту же ошибку, если не хватает места.У меня была та же ошибка, и это потому, что на жестком диске сервера было 0 КБ свободного места.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...