java.util.MissingResourceException

本文介绍了解决JasperReports在使用中文本地化时出现的java.util.MissingResourceException异常的方法。通过正确设置资源文件路径及名称,确保资源文件与报表文件匹配,从而避免加载资源时发生错误。

解决 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

运行时根据情况自动选择

### 回答1: java.util.missingresourceexceptionJava中的一个异常类,表示找不到所需的资源文件。这通常是由于资源文件的路径或名称错误导致的。要解决此问题,您需要检查资源文件的路径和名称是否正确,并确保它们与您的代码中的引用匹配。如果资源文件确实存在但仍然出现此异常,则可能是由于文件权限或编码问题导致的。 ### 回答2: java.util.MissingResourceExceptionJava编程语言中的一个异常类,用于指示资源文件缺失的情况。 当程序尝试加载一个资源文件(通常是properties文件或者资源束)时,如果资源文件不存在或无法访问,就会抛出MissingResourceException异常。 这个异常通常发生在调用java.util.ResourceBundle类的getBundle()方法时。这个方法用于获取指定名称的资源文件,如果找不到资源文件,就会抛出MissingResourceException异常。 要解决这个异常,需要确保资源文件存在且命名正确,并且可以被程序正确地访问。可以检查以下几个方面: 1. 资源文件的位置:确保资源文件位于正确的目录下。通常,资源文件应该放在与Java类相同的目录中,或者放在一个被设置为资源文件的目录中。 2. 资源文件的命名:资源文件的命名应该与调用getBundle()方法时传入的名称一致。注意大小写敏感的问题。 3. 资源文件的编码:如果资源文件包含非ASCII字符,确保文件的编码方式正确,以便在加载时能够正确解析。 4. 资源文件的访问权限:确保程序有足够的权限读取资源文件。如果资源文件位于受限制的目录或者需要特殊权限访问,需要相应地调整权限设置。 5. 重新编译和重新部署:如果以上步骤都没有问题,可以尝试重新编译和重新部署程序,以确保资源文件最新的版本被正确部署。 总之,当出现java.util.MissingResourceException异常时,需要仔细检查资源文件的位置、命名、编码和访问权限等方面,以确定问题所在,并进行相应的调整和修复。 ### 回答3: java.util.missingresourceexceptionJava中的一个异常类,表示在尝试加载资源文件时找不到特定的资源。 这个异常通常发生在程序中调用了ResourceBundle类的getBundle方法时。ResourceBundle类用于加载国际化的资源文件,包括文本、图像和其他相关资源。在调用getBundle方法时,它会尝试根据指定的包名和资源文件名加载对应的资源文件。如果找不到指定的资源文件,就会抛出java.util.missingresourceexception异常。 这个异常通常有以下几种可能的原因: 1. 资源文件不存在:可能是因为资源文件的名称或路径指定错误,或者根本就没有该资源文件。 2. 类路径问题:可能是因为资源文件不在类路径下,导致无法加载资源文件。 3. 文件编码问题:可能是资源文件编码格式不被支持或不正确,导致无法正确读取资源文件。 4. 权限问题:可能是由于访问资源文件的权限不足,无法读取资源文件。 为了解决这个异常,我们可以按照以下步骤进行排查: 1. 确保资源文件的名称和路径是正确的,并且确保资源文件确实存在。 2. 检查资源文件是否位于类路径下,如果不是,可以尝试将资源文件移动到类路径下,或者通过修改类路径来解决。 3. 确保资源文件的编码格式正确,并与代码中指定的编码一致。 4. 检查当前用户是否有足够的权限来读取资源文件,如果没有,则需要相应地修改权限。 总之,java.util.missingresourceexception异常表示在加载资源文件时找不到特定的资源。通过排查资源文件名称、路径、编码和权限等方面的问题,可以解决这个异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值