JasperReport:第2行第487行的解析错误,文档根元素“jasperReport”必须与DOCTYPE根“null”匹配

时间:2014-01-18 12:06:33

标签: java jasper-reports

我正在尝试使用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中运行它时会出错,请任何人有解决方案然后告诉我。

问候。

2 个答案:

答案 0 :(得分:1)

  1. 这可能是由项目库中可用的ireport和jar文件中的版本混淆引起的。复制您在ireport设计器中使用的相同jasper.jar文件,并将其添加到项目中。

  2. 在程序中加载 .JRXML 文件不是一个好主意。您可以先在ireport IDE中编译它,然后加载已编译的文件.JASPER,如下所示

    jasperPrint = JasperFillManager.fillReport( new FileInputStream(pathtoReport), parameters, connection);

答案 1 :(得分:0)

这是因为不同版本的jar文件,我只是更改了旧的jar文件并添加了5.5.0版本的当前版本jar,它运行正常。