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)で
最後に、私はそれを機能させました。 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
システムの起動時。
同じ問題が発生しましたが、ttfフォントとともにxorgフォントパッケージをインストールすることで解決しました。
テキスト解析例外は、フォントが認識されなかったことを意味します。理由を理解するために丸一日を費やし、最後にテキストSansSerifを使用してこの問題を修正しました。 Linuxでは、解析できるフォントはわずかです。よろしくお願いします
同様の問題がありました。 jasper Javaフローjarファイルを使用して解決しました。
Java.awt.headless=true
うまくいきませんでした。
この問題が発生すると、グーグルはあなたをここに連れてきます。私にとって問題は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)
試したソリューション
この問題が発生する理由は、特定のフォントのサポートが削除されたためです。
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のアップグレードを試すことができます。
この問題に何度も直面し、解決策を見つけました。このエラーは、ディスクのメモリ領域が不足しているために発生します...解決するために以下のことを試してください:(i)tmpフォルダに十分な領域を作成してください(ii).
幸運を祈る..それはあなたの問題を解決するはずです
十分なスペースがない場合は、同じエラーが発生します。同じエラーが発生したのは、サーバーのハードドライブに0KBの空き領域があったためです。
私も同じ問題を抱えていましたが、/ tmpスペースを減らすことで解決しました。 100%(/ tmpフォルダー)でした。 86%に減らしてサーバーを再起動すると、noclassdefinitionerrorはなくなり、問題は解決しました。