2013-11-22 18 views
5

Tôi gặp một số khó khăn khi xuất báo cáo của mình là XLS. Việc xuất dưới dạng PDF hoạt động tốt.java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFWorkbook.createDataFormat() Lorg/apache/poi/hssf/usermodel/HSSFDataFormat;

Vì vậy, tôi cố gắng cập nhật mới nhất JasperReportsApache POI phiên bản:

  • JasperReports: 5.5.0
  • POI: 3,7
  • iText: 2.1.7

Nhưng tôi luôn nhận được ngoại lệ sau:

java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFWorkbook.createDataFormat()Lorg/apache/poi/hssf/usermodel/HSSFDataFormat; 
    net.sf.jasperreports.engine.export.JRXlsExporter.openWorkbook(JRXlsExporter.java:284) 
    net.sf.jasperreports.engine.export.JRXlsAbstractExporter.exportReportToStream(JRXlsAbstractExporter.java:927) 
    net.sf.jasperreports.engine.export.JRXlsAbstractExporter.exportReport(JRXlsAbstractExporter.java:697) 
    com.phoenix.customermonitor.print.GenericDataSourceApp.xls(GenericDataSourceApp.java:290) 
    com.phoenix.customermonitor.print.GenericDataSourceApp.exportToFormat(GenericDataSourceApp.java:335) 
    com.phoenix.core.JasperReportHandlerAction.exportOrderMonitorOverview(JasperReportHandlerAction.java:242) 
    com.phoenix.customermonitor.action.OrderMonitorMainAction.execute(OrderMonitorMainAction.java:217) 
    org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) 
    org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) 
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) 
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) 
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304) 
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) 
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) 
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:643) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723) 

Xuất Mã

File sourceFile = new File(fileIn); 

JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject(sourceFile); 

String name = fileIn.substring(fileIn.lastIndexOf(System.getProperty("file.separator"))+1); 
name = name.substring(0, name.lastIndexOf(".")); 
File destFile = new File(fileOut); 

JRXlsExporter exporter = new JRXlsExporter(); 
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile.toString());  
exporter.exportReport(); 

Sau khi một số nghiên cứu Tôi đã thử nhiều phiên bản khác (4) nhưng tôi vẫn nhận được lỗi này. có ai biết cách giải quyết không?

Trả lời

4

Bạn có thư viện phiên bản cũ trong đường dẫn lớp học của mình.

Nếu báo cáo jasper phụ thuộc vào lib-xxx.jar, hãy đảm bảo rằng không có lib-yyy.jar nào khác trong đường dẫn lớp của bạn. Bạn có thể thực hiện việc này bằng cách xem lại jar được tải xuống jasper hoặc pom.xm.

Như tôi có thể đoán có một số phiên bản cũ của poi trong đường dẫn lớp học của bạn.

+0

Cảm ơn sự giúp đỡ của bạn. Tôi đã đọc về giải pháp này nhiều lần. Vì vậy, đã kiểm tra này. Phiên bản POI duy nhất tôi có trong classpath là 3.7. JasperReport JAR là từ http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%205.5.0/jasperreports-5.5.0.jar/download – Tunguska

+0

Kiểm tra từng vị trí, jre/lib/ext, vị trí đường dẫn lớp, có thể được đổi tên thành tệp jar. –

+2

[Câu hỏi thường gặp về Apache POI về chủ đề này] (http://poi.apache.org/faq.html#faq-N10006) đề xuất một số [mã giúp tìm kiếm] (http://poi.apache.org/faq. html # faq-N10006) bình POI bạn đang sử dụng – Gagravarr

Các vấn đề liên quan