解决 java.util.MissingResourceException: Can't find bundle for base name test1, locale zh_CN 错误
资源文件名:test1controlTest_zh_CN.properties
使用Jasper Report 本地化功能, 出现以下问题.
java.util.MissingResourceException: Can't find bundle for base name test1, locale zh_CN
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:837)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:727)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:700)
at net.sf.jasperreports.engine.fill.JRFillDataset.loadResourceBundle(JRFillDataset.java:551)
at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:582)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1202)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:842)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:814)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:492)
at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:448)
at com.tom.i18n.I18nApp.fillReport(I18nApp.java:82)
at com.tom.i18n.I18nApp.main(I18nApp.java:38)
就是说找不到配置文件
在尝试多次后, 发现在报表模版文件(.jrxml)中的 <jasperReport> 标签的属性 "resourceBundle"中显示为:
<jasperReport
name="test1"
...
resourceBundle="test1"
>
原来这里resourceBundle错误,是因为在ireport设计时没有在test1.jrxml文件的属性中绑定资源文件
改为:resourceBundle="test1controlTest_zh_CN"则解决错误
如果不绑定,则要求资源文件的名称也要与报表文件的名称保持一致,如:
test1.properties
test1_zh_CN.properties
test1_en_USproperties
运行时根据情况自动选择