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