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)
私は解決策を検索し束を発見しました。
- Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser
- JasperReports NoClassDefFoundError exception on net.sf.jasperreports.engine.util.JRStyledTextParser
し、約10以上(これは、私はそれらすべてを参加させることはできませんので、私の最初の質問です)。
私が試してみました:
- を
java.awt.headless=true
を設定します。
私はコード内でそれをやった:
static {
System.setProperty("java.awt.headless", "true");
System.out.println(java.awt.GraphicsEnvironment.isHeadless());
}
は(予想通りtrueを返します)。
私はJVMのオプションでそれをやった:
私は-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)の有効な配列を返します。すべての
コード(JasperReports API)をデバッグしようとしましたか? –
@Alex K、そうでした。 JRGraphEnvInitialazerクラス、public static synchronized initializeGraphEnv()、およびAVAILABLE_FONT_FACE_NAMES.addAll(Arrays.asList(GraphicsEnvironment.getLocalGraphicsEnvironment()。getAvailableFontFamilyNames()))から例外をスローします。 – evnica
Font.versionを取得する際に、スタックトレースに "起因する:"、ヌルポインタを追加できますか? –