2011-12-05 5 views
2

jasperreports-maven-pluginを使用してJasperを使用しようとしています。target/jasperから.jasperファイルを読み込みます。

src/main/jasperreportsディレクトリに.jrxmlを作成すると、プラグインはそれをコンパイルし、target/jasperに.jasperファイルを作成します。 これまでのところこれが機能しています。

ここでは、この.jasperファイルをJavaクラスに読み込んでレポートを埋めたいと思います。これが私の問題です。 target/jasperからこの.jasperファイルにアクセスするにはどうすればよいですか?

私は私のpom.xmlに追加のリソースディレクトリとしてそれを追加する必要が考えた:

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
     </resource> 
     <resource> 
      <directory>target/jasper</directory> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jasperreports-maven-plugin</artifactId> 
      <configuration> 
       <outputDirectory>${project.build.directory}/jasper</outputDirectory> 
      </configuration> 
      <executions> 
       <execution> 
       <goals> 
        <goal>compile-reports</goal> 
       </goals> 
       </execution> 
      </executions> 
     ... 

そして、このようのgetResourceを使用してそれを得る:

URL resource = getClass().getResource("/target/jasper/DataSourceReport.jasper"); 

しかし、これはnullを返します。 DataSourceReport.jasperファイルがtarget/jasperのプロジェクトの中にありますが、見つからないようです。

誰かが私が間違っていることを教えてもらえますか、これがうまくいかないのですか?

答えて

0

質問ジャスパープラグインなどよりも、Javaでのリソースからファイルをロードする方法の詳細です

プラグインは、あなたが必要なもの、仕事に行う正しくにファイル(.jasper)をロードすることです応用 。

リソースは、作成したjarによって異なります。したがって、レポート定義でその場所をスキップすることがあります。 jarファイルを開いてみて、レポートが含まれていることを確認してください。

Hereは、Javaプロジェクトでリソースを管理する方法を説明しています。

1

ありがとうございました。 それは確かに私が見落としたものでした。リソース要素は、フォルダがEclipseでリソースとしてインポートされたことだけを確認しましたが、別のMavenプラグインを追加して、作成されたjarに追加する複数のリソースフォルダを指定する必要がありました。私はこれがresources要素によって行われたと思った。

これは、私はそれを動作させるために追加するものです:あなたはYourClassName.class.getResourceAsStream(jasperLocation)を使用することができます

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.7</version> 
     <executions> 
     <execution> 
      <id>add-source</id> 
      <phase>generate-sources</phase> 
      <goals> 
      <goal>add-source</goal> 
      </goals> 
      <configuration> 
      <sources> 
       <source>${basedir}/src/main/resources</source> 
       <source>${project.build.directory}/jasper</source> 
      </sources> 
      </configuration> 
     </execution> 
     </executions> 
    </plugin> 
1

それはファイルのあなたの入力ストリームを返し、あなたがJRLoaderに渡すことができるのInputStreamます。それはあなたを助けるかもしれません。

関連する問題