1
窓の下でうまく動作する以下のコードを使用してジャスパーレポートを生成します。 ジャスパーレポートのフォントが埋め込まれています。フォントは、maven依存関係jasperreports-fontsを使用してアプリケーションにインポートされます。特にDeJaVu Sans。Linuxでこのフォントの問題が発生するのはなぜですか?
JasperDesign jasperDesign = JRXmlLoader.load(jasperStream);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, jrDataSource);
JasperViewer.viewReport(jasperPrint, false);
ただし、Linux環境でアプリケーションをデプロイすると、以下のエラーが表示されます。
java.lang.ExceptionInInitializerError
Caused by: net.sf.jasperreports.engine.JRRuntimeException: java.io.IOException: Problem reading font data.
at net.sf.jasperreports.engine.fonts.SimpleFontFace.<init>(SimpleFontFace.java:108)
at net.sf.jasperreports.engine.fonts.SimpleFontFace.<init>(SimpleFontFace.java:128)
at net.sf.jasperreports.engine.fonts.SimpleFontFace.getInstance(SimpleFontFace.java:67)
at net.sf.jasperreports.engine.fonts.SimpleFontFamily.setNormal(SimpleFontFamily.java:99)
Caused by: java.io.IOException: Problem reading font data.
at java.awt.Font.createFont0(Font.java:1000)
at java.awt.Font.createFont(Font.java:877)
残念ながら提案はありません。私がヘッドレスの場合、java.awt.HeadlessExceptionの例外がスローされます。 私はJettyサーバを使用しています – n1ckgun
@ n1ckgun私はまだそれが一時的なディレクトリの問題だと思っています。おそらくこれはhttp://www.eclipse.org/jetty /documentation/current/ref-temporary-directories.html –
私は、次のように一時ディレクトリを指定してjettyを起動しようとしました: /usr/bin/java -Djetty.state =/jetty/jetty.state -Djetty .port = 8080 -Xmx1024m -Djetty.logs =/jetty/logs/-Djetty.home =/jetty -Djava.io.tmpdir =/jetty/tempdir -jar /jetty/start.jar etc/jetty-logging.xmlなど/jetty-started.xml ここで、/ jetty/tempdirはアクセス権に問題がありません – n1ckgun