19695


現在帳票をpdf出力する処理を作っているのですが、以下の処理になります。

[code]

    val path: String = File.createTempFile("tmp", "report.pdf").getAbsolutePath
    //pdfを作成
    JasperExportManager.exportReportToPdfFile(
      JasperFillManager.fillReport(
        JasperCompileManager.compileReport("conf/report.jrxml"),
        Map("userName" -> this.userName)
      ),path)
    
[/code]

開発環境ですと正常に動きますが、  
sbt-assemblyでjarファイルにして起動すると、  
以下のログで処理が終わらなくなります

[code]

    [debug] - org.apache.commons.digester.Digester.sax - endPrefixMapping()
    [debug] - org.apache.commons.digester.Digester.sax - endPrefixMapping(xsi)
    [debug] - org.apache.commons.digester.Digester.sax - endDocument()
    [debug] - net.sf.jasperreports.engine.fill.BaseReportFiller - Fill 1: created for report
    [debug] - net.sf.jasperreports.engine.fill.BaseReportFiller - created delayed actions 1 for filler 1
    
[/code]

色々探しまして、font云々の情報が多かったのですが、試しに白紙になるようなjrxmlファイルを作成しましたが、結果は変わりませんでした。

環境  
Linux  
Scala 2.11.7  
java 1.8.0_51  
jasperreports 6.1.1

よろしくお願いします。

追記:  
色々やっていき、エラーメッセージが表示されました。

[code]

    net.sf.jasperreports.engine.JRException: Byte data not found at : reports/logo.png
    
[/code]

どこを指定すればよいのか分かりません...  
sbt-assemblyでjarファイル化するとパスが違っていくるようで、上記のエラーが出ます。よろしくおねがいします。


CC BY-SA 3.0
2015-11-30T11:21:43.250
19475
2016-05-26T09:05:36.710
2016-05-26T09:05:36.710
4739
9328
question
java scala sbt
JasperReports net.sf.jasperreports.engine.JRException: Byte data not found at : reports/logo.png


解決しましたので、共有させて頂きます。

sbt-assembly によりjarファイル化され、内部に配置されている画像がパスで取得できず、上記のエラーになっていました。  
InputStreamでのアクセスは可能なようなので、fillReport時に

[code]

    new java.util.HashMap[String, java.lang.Object](Map(
        "logo" -> JRLoader.getLocationInputStream("reports/logo.png")
    ))
    
[/code]

JRLoader.getLocationInputStreamでInputStream型で画像パスを取得し、内部でパラメータ定義すれば表示できました。


CC BY-SA 3.0
2015-12-07T03:00:45.790
19695
2015-12-07T03:00:45.790
9328
19475
answer