2016-05-25 102 views
1

に設定されています:Tomcat:JRStyledTextParserが初期化されていません。 java.awtでは、私は<code>java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser</code></p> <p>を取得し、完全なスタックトレースがある保つ真

java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser 
net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:108) 
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:69) 
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57) 
net.sf.jasperreports.engine.fill.JRFiller.createBandReportFiller(JRFiller.java:200) 
net.sf.jasperreports.engine.fill.JRFiller.createReportFiller(JRFiller.java:215) 
net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:115) 
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:583) 
net.sf.jasperreports.engine.JasperRunManager.runToPdf(JasperRunManager.java:455) 
net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:870) 
com.evnica.interop.main.ReportServlet.createReport(ReportServlet.java:119) 
com.evnica.interop.main.ReportServlet.doGet(ReportServlet.java:96) 
com.evnica.interop.main.ReportServlet.service(ReportServlet.java:79) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 

私は解決策を検索し束を発見しました。

し、約10以上(これは、私はそれらすべてを参加させることはできませんので、私の最初の質問です)。

私が試してみました:

  1. java.awt.headless=trueを設定します。

私はコード内でそれをやった:

static { 
    System.setProperty("java.awt.headless", "true"); 
    System.out.println(java.awt.GraphicsEnvironment.isHeadless()); 
} 

は(予想通りtrueを返します)。

私はJVMのオプションでそれをやった: enter image description here

私は-Djava.awt.headless=trueにCATALINA_OPTSを設定します。期待どおりのエコー。

助けになりませんでした。

私はDejaVu Sansで.jrxmlを使ってテストし、パスにjasperreports-fonts-6.2.2.jarを含めて、Sans Serifでテストしました。私はどのフォントがJVMで利用可能であるかを確認し、それらでテストしました。失敗。

jasperreports jarのバージョンを確認するための提案がありました。確認しました。私は6.2.2のすべての瓶を持っています。バージョン:

jasperreports-6.2.2.jar, 
jasperreports-fonts-6.2.2.jar, 
jasperreports-javaflow-6.2.2.jar. 

私はジョダ-時間-2.9.3を使用して(それが問題に接続したかわかりませんが、1つのアドバイスはジョダを使用することでした。私はとにかく最初からそれを使用)、プロジェクトSDKは、javaです1.8.0_51(8に更新するアドバイスがありました - 私は既にそれを使用していません)、私のTomcatはOKです。(不在の作業フォルダは、ケースの1つで同様の問題を引き起こしました)。

私には何が欠けていますか?

EDIT: 私はutil.graphic.environment.initialization.errorスローJRGraphEnvInitializerクラスのメソッドinitializeGrophEnv()、に来たデバッグ中:

AVAILABLE_FONT_FACE_NAMES.addAll(Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames())); 

それは面白いですが、そのメソッドのgetAvailableFontFamilyNames()でSunGraphicsEnvironmentは274個の要素(リンクの下にデバッガからのPrintScreen)の有効な配列を返します。すべての

enter image description here

+0

コード(JasperReports API)をデバッグしようとしましたか? –

+0

@Alex K、そうでした。 JRGraphEnvInitialazerクラス、public static synchronized initializeGraphEnv()、およびAVAILABLE_FONT_FACE_NAMES.addAll(Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment()。getAvailableFontFamilyNames()))から例外をスローします。 – evnica

+1

Font.versionを取得する際に、スタックトレースに "起因する:"、ヌルポインタを追加できますか? –

答えて

0

まず、時間みんなありがとうエル・P。あなたはとても速く反応し、私はもっと深く掘り下げました=)問題は解決されました。

私のエラーは、jasperreports-6.2.2.jarjasperreports-javaflow-6.2.2.jarの両方をライブラリに持つことでした。あなたが覚えているように、スタックトレースの最後のメソッドはJRBaseFillerの初期化でした。 2つのjarが存在すると、コンフリクトが発生しました。どちらもパッケージnet.sf.jasperreports.engine.fillJRBaseFillerクラスが含まれています。

私はjasperreports-javaflow-6.2.2.jarを残しました。それ自体は機能しませんでした。さらに2つのライブラリ:jfreechart-1.0.19.jar(以前のバージョンにはすべての必要なクラスが含まれていませんでした)とjcommon-1.0.8が追加されました。 java.lang.NoClassDefFoundErrorはなくなりました。

関連する問題

 関連する問題