我正在尝试使用Spring Batch开始使用Jasper Reports。
工作环境:RAD 7.5(日食!),Maven
我有一个最简单的Spring Batch程序,其中一个作业有一个tasklet,除了打印HELLO WORLD之外什么也没做。
这很好。
在此之后 - 我将jasper报告jar文件复制到我项目的lib文件夹中。右键单击项目 - >转到属性 - >构建路径 - >添加Jar文件 - >选择jasper report jar并单击“确定”。
直到现在。
现在在我的tasklet程序中,我只是添加以下行:
JasperReport jasperReport;
由于我声明了一个类型为JasperReport的变量,因此eclipse会大肆宣传导入该类。
我点击eclipse显示的错误气泡(带有十字的红色气泡),它列出了我添加到类路径的jar上面的正确类。我选择了导入建议并且错误消失了。
现在,我正在保存文件 - >右键单击项目 - >运行方式 - > Maven-Install就是这样:
Maven抱怨:
Compilation failure
C:\Nikunj\Sandbox\Reporting\src\main\java\com\in\nik\example\util\GenerateReportTasklet.java:[12,35] package net.sf.jasperreports.engine does not exist
C:\Nikunj\Sandbox\Reporting\src\main\java\com\in\nik\example\util\GenerateReportTasklet.java:[25,8] cannot find symbol
symbol : class JasperReport
location: class com.in.nik.example.util.GenerateReportTasklet
检查了100次。包装在罐子里。这个课就在罐子里。如果它不存在,将不会出现eclipse显示错误。它没有显示。意味着它在那里。
我的GenerateReportTasklet是:
package com.hsbc.us.pb.custody.util;
import net.sf.jasperreports.engine.JasperReport;
import org.springframework.batch.core.StepContribution;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;
public class GenerateReportTasklet implements Tasklet {
public RepeatStatus execute(final StepContribution arg0, final ChunkContext arg1) throws Exception {
JasperReport jasperReport;
System.out.println("Hello Report!");
return null;
}
}
我无法弄清楚我错过了什么。
请不要建议在我的POM.xml中添加jar作为依赖项我可以轻松地做到这一点。
但我知道我上面要做的事情应该有效,而且不起作用。我想找到它的根源。
有什么想法吗?
我知道这没关系但是我从java2s.com下载了jar:
http://www.java2s.com/Code/Jar/JKL/Downloadjasperreportsjar.htm
感谢您阅读!!
答案 0 :(得分:0)
使用Eclipse编译时,Eclipse将为编译构建一个类路径。如果您告诉Eclipse您需要一个JAR,那么Eclipse将在编译类路径中包含该JAR,并且您的编译将起作用。
Maven也会发生同样的事情,除了告诉Maven你需要JAR的方法是将它作为POM中的依赖项添加。
你不希望Eclipse知道你需要某个JAR(没有你告诉它)。你为什么期待Maven有什么不同?
注意:Maven是一个独立于IDE的工具,它不了解您的Eclipse项目配置 - 尽管您可以反过来使Eclipse从POM声明的依赖项中配置其类路径。