Java Jasper报告区域设置错误
我正在使用iReport 5.0.1工具创建Jasper报告,我的报告已正确编译,但当我单击“预览”按钮时,它会抛出以下错误: 错误描述:Java Jasper报告区域设置错误,java,internationalization,jasper-reports,resourcebundle,Java,Internationalization,Jasper Reports,Resourcebundle,我正在使用iReport 5.0.1工具创建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.MissingRe
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();
InputStream input=newfileinputstream(request.getRealPath(compiledTemplate));
映射参数=新的HashMap();
Locale Locale=(Locale)request.getSession().getAttribute(GFDBConstants.WW_TRANS_I18N_Locale);
System.out.println(“区域设置为******+”“+locale”);
ResourceBundle rbundle=ResourceBundle.getBundle(“报告”,语言环境);
parameters.put(jrparmeter.REPORT\u RESOURCE\u BUNDLE,rbundle);
System.out.println(“资源包是********”+rbundle);
parameters.put(jrparmeter.REPORT\u LOCALE,LOCALE);
parameters.put(“CONTEXT”,request.getServletContext().getRealPath(“/”);
JasperPrint print=JasperFillManager.fillReport(输入、参数、jrBeanCollectionDataSource);
ByteArrayOutputStream输出ByTestStream=新建ByteArrayOutputStream();
JRCsvExporter csvExporter=新JRCsvExporter();
csvExporter.setParameter(JRCsvExporterParameter.JASPER_PRINT,PRINT);
csvExporter.setParameter(JRCsvExporterParameter.OUTPUT_STREAM,outputByteStream);
System.out.println(“成功生成报告后”);
setParameter(JRCsvExporterParameter.FIELD_分隔符,“,”);
csvExporter.setParameter(JRCsvExporterParameter.RECORD_分隔符,“\n”);
setParameter(JRCsvExporterParameter.IGNORE_PAGE_MARGINS,true);
System.out.println(“\n已成功生成”);
csvExporter.exportReport();
input.close();
HttpServletResponse=ServletActionContext.getResponse();
response.setContentType(“应用程序/csv”);
response.setHeader(“内容处置”、“附件;文件名=“+csvFileName”);
ServletOutputStream outStream=response.getOutputStream();
outStream.write(outputByteStream.toByteArray());
冲水;
exptream.close();
检查您是否已创建名为Report\u en\u US.properties的属性文件,如果您没有在同一位置创建Report\u en\u US.properties文件
第二个选项是加载不带本地的资源包。它将加载默认的资源包Report.properties
ResourceBundle rbundle = ResourceBundle.getBundle("Report");
如果您不确定资源包加载路径,请尝试下面给定的代码
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);
嗯,
我期待着这方面的快速反应,这对我来说很紧急
-祝你好运!是的,我已在同一路径上创建了Report_en_US属性文件,我也尝试了第二种解决方案,但不起作用。您可以共享您的文件夹结构吗?属性文件的确切位置