2012-04-03 111 views
1
public void openReport() { 

    try { 
     HashMap params = new HashMap(); 
     params.put("aapor", 19); 

     JasperReport jasperReport1 = JasperCompileManager.compileReport("C:/Users/emidemi.emidemi-PC/Documents/NetBeansProjects/FleetManager/src/FleetManager/newReport5.jasper"); 
     JasperPrint jasperPrint1 = JasperFillManager.fillReport(jasperReport1, params, conn.getConn()); 

     JRViewer viewer = new JRViewer(jasperPrint1); 

    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
    } 
} 

上面是我的脚本。JasperReports API:调用JasperCompileManager.compileReport(String)方法引发了MalformedByteSequenceException异常

这是我的错误:

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence. 
BUILD SUCCESSFUL (total time: 7 seconds) 

有谁知道这是为什么发生,以及如何解决它?

回答

0

何时发生此异常cur(编译还是执行?)。通常这个问题意味着你的输入不是UTF-8。

如果您完全确定它应该是UTF-8,请尝试以下操作: 1.创建一个新的EMPTY文件并将其编码为UTF-8。 2.将旧文件中的全部文本复制到新文件中。 3.保存新文件并检查它是否适用于新文件。如果是这样,你的旧文件是不正确的UTF-8。 4.如果没有,发布您的输入文件(JRXML)

当我有这样我试图找到问题的性质问题,一个十六进制编辑器帮助。

1

您正在尝试编译已编译的jasper文件。用newReport5.jrxml替换newReport5.jasper。

如果您想直接与碧玉文件中工作,你必须这样做:

JasperReport jasperReport = (JasperReport)JRLoader.loadObject(new File("filename.jasper")); 
相关问题