web-dev-qa-db-ja.com

クラスnet.sf.jasperreports.engine.util.JRStyledTextParserを初期化できませんでした

ブラウザにレポートを表示しようとしていますが、次のエラーが発生します。

enter image description here

これについて奇妙なことは、サーバーにインストールされているバージョンからレポートを生成しようとしたときにのみ発生し、PCからローカルで実行したときに発生しないことです。

これがなぜ起こっているのかあなたは何か考えがありますか?

19
eddy

これはヘッドレスモードの問題のようです。 Java.awt.headlessプロパティをtrueに設定する必要があります。それは以下を使用して行うことができます:

static {
    System.setProperty("Java.awt.headless", "true");
}

または、Tomcat起動コマンドのheadlessプロパティを-Djava.awt.headless=trueとして設定します

また、これが必要な理由について詳しく読むことができます。ヘッドレスモードについて読むこともできます こちら

9
Master.Aurora

これは、見つからない/アクセスできないJava 'temp'ディレクトリです。Font.Javaでは、一時ファイルが作成されています。

Files.createTempFile("+~JF", ".tmp").toFile();

1つのシステムでは、Tomcatフォルダーの下に 'temp'ディレクトリーがありませんでしたが、Javaはそれを使用するように構成されていました:

-Djava.io.tmpdir=C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\temp

ところで。初めて、Tomcatを再起動した後、サービスは実際にはIOExceptionをスローしていましたが、JasperReportsが何かをキャッシュし、その後の呼び出しでスタックトレースがここで報告されたとおりでした。

7
Stepan

これは、クラスパスの問題で欠落しているjarです。

私はこの問題を抱えていて、不足しているjarをクラスパスに追加することで問題が解決したことを発見しました。

以下の記事から Java.dzone.com記事 必要な最小限のjarファイルは...であることがわかりました。

  • jasperreports-2.0.4.jar
  • commons-digester-1.7.jar
  • commons-collections-2.1.jar(commons-collections.jar)
  • commons-logging-1.0.2.jar
  • commons-beanutils.jar
  • iText-2.0.7.jar(infor PDFエクスポートに使用)
7
Mark Ellul

まだこの問題が発生している人のために:ヘッドレスOpenJDK JREを備えたUbuntu Server 12.04で、それは単に解決されました

apt-get install ttf-dejavu-extra
7
zwets

Dockerコンテナーにスプリングブートアプリ(jasperレポートを含む)をデプロイしているときにこのエラーが発生しました。問題は、Dockerコンテナー環境の構築に使用したopenjdk:8-jdk-Alpineにありました。フォントのサポートにバグがあります。したがって、私はopenjdk:8-jreに切り替え(またはOpenJDK 7バージョンも役立ちます)、それは私にとってはうまくいきました。 このバグを修正するために何日も費やしました。

5

この問題を解決するには、次のようにします。

  1. Open JDKからSun JDKに切り替え
  2. インストールされているMSコアフォント
  3. アプリケーションと一緒にパッケージ化されたJasperReportフォントライブラリjar
4
Isnah

これはメモリの問題である可能性があります。サーバーを再起動してください。

4
fernando

少し遅れましたが、これがこの問題が発生した理由です...最近、EclipseではなくIntelliJを使用して開発を開始しました。 IntelliJを管理者として実行するのを忘れただけです... Eclipseでこれをすでに長い間行っていましたが、IntelliJでそれについて考えていませんでした。結局のところ、Cドライブで読み取り/書き込みを行うための十分な権限がないため、フォントが見つからなかったか、フォルダが見つからなかったと思います。

1

私の場合、問題は、Dockerイメージのビルドに使用していたjdk8にありましたが、検索を行った後、jreに切り替えました。これでバグが修正されました。 jdk8を使用する代わりに、任意の画像を試すことができると思います。

0

私にとっての問題は、AdoptOpenJDKのバグに関するものでした: https://github.com/AdoptOpenJDK/openjdk-build/issues/682

Dockerfileにttf-dejavuを手動でインストールして問題を修正しました

FROM adoptopenjdk/openjdk8:Alpine-jre

# Workaround for wrong font configuration in adoptopenjdk
# https://github.com/AdoptOpenJDK/openjdk-build/issues/682
RUN apk update && apk upgrade \
   && apk add --no-cache ttf-dejavu \
   # Install windows fonts as well. Not required..
   && apk add --no-cache msttcorefonts-installer \
   && update-ms-fonts && fc-cache -f

フラグ-Djava.awt.headless=trueを使用してアプリケーションを実行する

0
Mr.Turtle

私は同じ問題を数時間検索しましたが、私の解決策は他のどれにも言及されていません。

Jasperレポートのバージョンが不適切に更新されたため、クラスパスに複数のバージョンのjasperreports jarファイルがありました。 jasperreports jarファイルが1つだけあることを確認してください...

0
W. Goeman

私たちの場合、一時サーバーを削除して(jarの重複がないことを確認する)、サーバーを再起動することができました。ヒント:エラーが新しいリリースの後に発生し始めた場合にこれを試してください(ただし、以前は機能し、リリースで変更されたものはありません)

0
Josef Bodnar

開発マシンでも同じ問題に直面しました。基本的にはアプリケーションサーバーの問題が原因で発生しました(Apache Tomcat

基本的に、サーバールートの "temp"フォルダを誤って削除しました。したがって、jasperはレポートをコンパイルして、レポート生成を続行できません。

0

同じエラーが発生しました-明らかにJRStyledTextParserはxml-apisからの依存関係を使用していますxml-apisを追加することで修正しました

<dependency>
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version>
</dependency>
0
Denys

私の場合、これにArialフォントを使用していましたが、以下のようなirfonts.xmlでarialフォントを構成しました

<fontFamily name = "Arial">
<通常> <![CDATA [fonts/arial.ttf]]> </通常>
<太字> <![CDATA [fonts/arialbd.ttf]]>
</ bold>
<イタリック> <![CDATA [fonts/ariali.ttf]]>
</ italic>
<boldItalic> <![CDATA [fonts/arialbi.ttf]]>
</ boldItalic>
<pdfEmbedded> <![CDATA [true]]>
</ pdfEmbedded> </ fontFamily>
しかし、それは次のようになるはずです:
<fontFamily name = "Arial">
<通常> <![CDATA [fonts/arial.ttf]]> <
/通常>
<bold> <![CDATA [fonts/arialbd.ttf]]> </ bold>
<italic> <![CDATA [fonts/ariali.ttf]]> </ italic>
<boldItalic> <!
[CDATA [fonts/arialbi.ttf]]> </ boldItalic>
<pdfEmbedded> <!
[CDATA [true]]> </ pdfEmbedded>
</ fontFamily>
そのため、上記の構成ファイルの各タグの終了タグの前のスペースでした。
私はそれらの間のスペースを削除することで修正しました。

0
user2870979

これは役立つかもしれませんが、同じエラーが発生し、他のすべてのソリューションが機能しませんでした。

Java8にアップデートして修正しました。

0
plrenaudin