Java 从target/jasper读取.jasper文件

Java 从target/jasper读取.jasper文件,java,maven,resources,jasper-reports,Java,Maven,Resources,Jasper Reports,我正在尝试使用JasperReportsMaven插件使用Jasper 因此,在src/main/jasperreports目录中创建.jrxml,插件编译它并在target/jasper中创建一个.jasper文件。 到目前为止,这是可行的 现在,我想将这个.jasper文件读入一个Java类,以填充报告。这就是我的问题所在。如何从target/jasper访问此.jasper文件 我想我需要将其作为附加资源目录添加到pom.xml中: <build> <reso

我正在尝试使用JasperReportsMaven插件使用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>
        ...
但是,这将返回null。 文件DataSourceReport.jasper位于我的项目中的target/jasper下,但它似乎无法找到它


有谁能告诉我我做错了什么,或者为什么这不起作用吗?

问题更多的是如何从Java中的资源加载文件,而不是Jasper插件等

插件要完成这项工作,您需要的是将文件(.jasper)正确加载到应用程序中

资源取决于您创建的jar的类型。因此,您可能会使用报表定义跳过该位置。尝试打开jar文件并检查是否包含报告

请描述如何在Java项目中管理您的资源。

谢谢。 这确实是我忽略的。resource元素只确保在Eclipse中将文件夹作为资源导入,但我需要添加另一个maven插件来指定要添加到所创建jar的多个资源文件夹。我认为这是由资源元素完成的

这是我为使其工作而添加的内容:

    <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>

org.codehaus.mojo
构建助手maven插件
1.7
添加源
生成源
添加源
${basedir}/src/main/resources
${project.build.directory}/jasper

您可以使用您的classname.class.getResourceAsStream(jasperLocation)它将返回文件的输入流和可传递给JRLoader的输入流。它可能会帮助您。

在ireport中打开.jasper文件。
ireport中有多个选项只要打开该文件,您就会看到一个弹出窗口“是否需要将此文件转换为.jrxml?”单击“是”。

这样,每次运行应用程序时,jrxml都会运行。我的建议是使用JasperReports依赖项从类存储库编译jasper。就像

将jasper存储库保存在类路径下 通过以下代码加载并编译它:

       //jasper is the repository under classses repo
       //ReceiveReport.jasper is the report file
       jasperStream = this.getClass().getResourceAsStream("/jasper/ReceiveReport.jasper");
使用此依赖项

       <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.4.0</version>
        </dependency>
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports-fonts</artifactId>
            <version>6.0.0</version>
        </dependency>

net.sf.jasperreports
jasperreports
6.4.0
net.sf.jasperreports
jasperreports字体
6.0.0
       <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.4.0</version>
        </dependency>
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports-fonts</artifactId>
            <version>6.0.0</version>
        </dependency>