我正在尝试使用java代码从jrxml文件制作pdf,但它给了我以下错误:
SEVERE: Parse Error at line 2 column 487: Document root element "jasperReport", must match DOCTYPE root "null".
org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 487; Document root element "jasperReport", must match DOCTYPE root "null".
......
我的代码:主类:
public class MainClass_Dummy {
public static JasperDesign jasperDesign;
public static JasperPrint jasperPrint;
public static JasperReport jasperReport;
public static String filename = "D://ReceiptReport.jrxml";
public static String outputreport = "D://test_jasper.pdf";
static JRBeanCollectionDataSource jrBeanCollectionDataSource;
public MainClass_Dummy(){
try{
System.out.println("Loading a jrxml file..");
FileInputStream input = new FileInputStream(new File(filename));
jasperDesign = JRXmlLoader.load(input);
jasperReport = JasperCompileManager.compileReport(jasperDesign);
jasperPrint = JasperFillManager.fillReport(jasperReport, null, jrBeanCollectionDataSource);
Desktop.getDesktop().open(new File("D:/ReceiptReport.pdf"));
}catch(Exception e){e.printStackTrace();}
}
public static void main(String[] args) {
Dummy_MainClass dm = new Dummy_MainClass();
new MainClass_Dummy(); }
}
它成功创建了jrxml并且在ireport 5.5.0中工作正常,但是当我在eclipse中运行它时会出错,请任何人有解决方案然后告诉我。
问候。
答案 0 :(得分:1)
这可能是由项目库中可用的ireport和jar文件中的版本混淆引起的。复制您在ireport设计器中使用的相同jasper.jar文件,并将其添加到项目中。
在程序中加载 .JRXML 文件不是一个好主意。您可以先在ireport IDE中编译它,然后加载已编译的文件.JASPER,如下所示
jasperPrint = JasperFillManager.fillReport( new FileInputStream(pathtoReport), parameters, connection);
答案 1 :(得分:0)
这是因为不同版本的jar文件,我只是更改了旧的jar文件并添加了5.5.0版本的当前版本jar,它运行正常。