web-dev-qa-db-ja.com

net.sf.jasperreports.engine.util.JRStyledTextParserのJasperReports NoClassDefFoundError例外

WebLogic 11gでエクスポートしようとすると、NoClassDefFound例外がスローされます。アプリケーションWARを確認し、jasperreports-3.7.4.jarがWEB-INF/libフォルダーに含まれています。エラーは何ですか?

StackTrace

Java.lang.NoClassDefFoundError:net/sf/jasperreports/engine/util/JRStyledTextParser at net.sf.jasperreports.engine.fill.JRBaseFiller。(JRBaseFiller.Java:181)at net.sf.jasperreports.engine.fill.JRVerticalFiller。 (JRVerticalFiller.Java:76)net.sf.jasperreports.engine.fill.JRVerticalFiller。(JRVerticalFiller.Java:86)at net.sf.jasperreports.engine.fill.JRVerticalFiller。(JRVerticalFiller.Java:56)at net。 sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.Java:142)at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.Java:78)at net.sf.jasperreports.engine.JasperFillManager fillReport(JasperFillManager.Java:624)org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.fillReport(AbstractJasperReportsView.Java:676)で

27
Esteve Camps

最後に、私はそれを機能させました。 NoClassDefFoundError:net/sf/jasperreports/engine/util/JRStyledTextParserの前にスローされたルート例外を検出しました。

Java.lang.NoClassDefFoundError: Sun/awt/X11GraphicsEnvironment

UnixおよびLinux上のSun AWTクラスは、X Window Systemに依存しています。これらのクラスを使用すると、Xクライアントライブラリをロードし、Xディスプレイサーバーと通信できるようになります。クライアントにGUIがある場合、これは理にかなっています。残念ながら、クライアントがAWTを使用しているがGUIがない場合でも必要です(私の場合、Webアプリケーションからレポートを生成します)

これを回避する方法は、システムプロパティJava.awt.headless=trueシステムの起動時。

33
Esteve Camps

同じ問題が発生しましたが、ttfフォントとともにxorgフォントパッケージをインストールすることで解決しました。

4
rudygodoy

テキスト解析例外は、フォントが認識されなかったことを意味します。理由を理解するために丸一日を費やし、最後にテキストSansSerifを使用してこの問題を修正しました。 Linuxでは、解析できるフォントはわずかです。よろしくお願いします

2
Lorenzo

同様の問題がありました。 jasper Javaフローjarファイルを使用して解決しました。

Java.awt.headless=true

うまくいきませんでした。

1
Tony A

この問題が発生すると、グーグルはあなたをここに連れてきます。私にとって問題は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

Oracle JDKからのLucida Fontsの削除Oracle JDKはフォントを出荷しなくなり、オペレーティングシステムにインストールされたフォントに完全に依存します。

これは、Bigelow&Holmes Lucidaファミリー(Lucida Sans、Lucida Bright、およびLucida Typewriter)のフォントがJDKのアプリケーションで使用できなくなったことを意味します。

アプリケーションがJDKに同梱されているフォントに依存している場合、それらを更新する必要があります。

システム管理者がシステムフォントパッケージではなくJDKに同梱されているフォントに依存するサーバーアプリケーションをJavaサーバーアプリケーションで実行している場合、アプリケーションはシステムフォントパッケージがインストールされるまで実行に失敗します。

JDKの以前のバージョンに戻るか、Jasperのアップグレードを試すことができます。

0
vsingh

この問題に何度も直面し、解決策を見つけました。このエラーは、ディスクのメモリ領域が不足しているために発生します...解決するために以下のことを試してください:(i)tmpフォルダに十分な領域を作成してください(ii).

幸運を祈る..それはあなたの問題を解決するはずです

0
Randhish kumar

十分なスペースがない場合は、同じエラーが発生します。同じエラーが発生したのは、サーバーのハードドライブに0KBの空き領域があったためです。

0
drinovc

私も同じ問題を抱えていましたが、/ tmpスペースを減らすことで解決しました。 100%(/ tmpフォルダー)でした。 86%に減らしてサーバーを再起動すると、noclassdefinitionerrorはなくなり、問題は解決しました。

0
Ankit Kachchhi