2016-04-11 37 views
-1

我使用的iReport 5.0.1工具来创建Jasper报表,我的报告得到正确的编译,但是当我点击预览按钮,它会引发以下错误:Jasper报表区域设置错误

错误说明:

 Filling report... 
 Locale: English (United States) 
 Time zone: Default 
    Error filling print... Can't find bundle for base name Report_en_US, locale en_US 
java.util.MissingResourceException: Can't find bundle for base name Report_en_US, locale en_US  
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1427)       
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1250)       
at java.util.ResourceBundle.getBundle(ResourceBundle.java:952)       
at net.sf.jasperreports.engine.util.JRResourcesUtil.loadResourceBundle(JRResourcesUtil.java:660)  
at net.sf.jasperreports.engine.util.JRResourcesUtil.loadResourceBundle(JRResourcesUtil.java:598)      
at net.sf.jasperreports.engine.fill.JRFillDataset.loadResourceBundle(JRFillDataset.java:570)     
at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:605)  
at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1257)      
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:877)       
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:841)      
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:88)      
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)     
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:569)    
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:915)     
at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:928)       
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)       
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)  
Print not filled. Try to use an EmptyDataSource... 

我使用下面的Java代码来生成报告:

InputStream input = new FileInputStream(request.getRealPath(compiledTemplate)); 

     Map<String,Object> parameters = new HashMap<String,Object>(); 
     Locale locale = (Locale)request.getSession().getAttribute(GFDBConstants.WW_TRANS_I18N_LOCALE); 
     System.out.println("locale is ******" +"" + locale); 
     ResourceBundle rbundle = ResourceBundle.getBundle("Report", locale); 
     parameters.put(JRParameter.REPORT_RESOURCE_BUNDLE, rbundle); 
     System.out.println("Resource Bundle is ********" +rbundle); 
     parameters.put(JRParameter.REPORT_LOCALE, locale); 
     parameters.put("CONTEXT",request.getServletContext().getRealPath("/")); 
     JasperPrint print = JasperFillManager.fillReport(input, parameters, jrBeanCollectionDataSource);   
     ByteArrayOutputStream outputByteStream = new ByteArrayOutputStream(); 

     JRCsvExporter csvExporter = new JRCsvExporter(); 
     csvExporter.setParameter(JRCsvExporterParameter.JASPER_PRINT, print); 
     csvExporter.setParameter(JRCsvExporterParameter.OUTPUT_STREAM, outputByteStream); 
     System.out.println("After report generated successfully"); 
     csvExporter.setParameter(JRCsvExporterParameter.FIELD_DELIMITER, ","); 
     csvExporter.setParameter(JRCsvExporterParameter.RECORD_DELIMITER, "\n");   
     csvExporter.setParameter(JRCsvExporterParameter.IGNORE_PAGE_MARGINS, true); 
     System.out.println("\n successfully generated"); 
     csvExporter.exportReport(); 
     input.close(); 
     HttpServletResponse response = ServletActionContext.getResponse(); 
     response.setContentType("application/csv"); 
     response.setHeader("Content-Disposition", "attachment;filename=" + csvFileName); 

     ServletOutputStream outStream = response.getOutputStream(); 
     outStream.write(outputByteStream.toByteArray()); 
     outStream.flush(); 
     outStream.close(); 
+1

嗯,'我期待在这个快速反应这对我来说迫切' - 祝你好运! – halfer

回答

0

检查已经创建的属性文件名为[R eport_en_US.properties,如果您没有在同一位置创建Report_en_US.properties文件

第二个选项加载没有本地的资源包。它会加载默认的资源包Report.properties

ResourceBundle rbundle = ResourceBundle.getBundle("Report"); 
+0

是的我在同一条路径上创建了Report_en_US属性文件,我尝试了第二种解决方案,但它不能工作。 –

+0

你能分享你的文件夹结构吗?确切的属性文件可用 – balamuruganv

0

如果你不能确定资源包加载路径请尝试以下给出代码

File file = new File("your resource file locaiton"); 
URL[] urls = {file.toURI().toURL()}; 
ClassLoader loader = new URLClassLoader(urls); 
ResourceBundle rb = ResourceBundle.getBundle("Resource", Locale.getDefault(), loader);