关于ResourceBundle的找不到资源的问题

 

 

1)        目录结构:

|   build.xml
+---build
|   /---classes
|       /---com
|           /---nana
|               /---test
|                       Scrap.class
|
+---src
|   /---com
|       /--- nana
|           /--- test
|                   autogen.properties
|                   Scrap.java

 

2)        问题描述:

ResourceBundle rb = ResourceBundle.getBundle("autogen.properties",Locale.getDefault());

 

Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name autogen.properties, locale zh_CN

    at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)

    at java.util.ResourceBundle.getBundleImpl(Unknown Source)

    at java.util.ResourceBundle.getBundle(Unknown Source)

    at com.nana.test.AutoGen.main(AutoGen.java:25)

 

3)        问题解决:

1.这类resource properties文件是由classloader装载的,和java文件很类似,所以应该把这类文件加到classpath中。

2. ResourceBundle.getBundle("com.nana.test.autogen")告诉classloader装载一个资源,其名字是 "autogen",包名为 "com.nana.test" 

3. 如果想不写包名,直接获取autogen.properties,则需要把autogen.properties文件拷贝到classes/com/nana/test/目录下,和调用它的类文件一起。

ResourceBundle rb = ResourceBundle.getBundle("autogen",Locale.getDefault());

ResourceBundleJava中用来读取资源文件的工具类,它可以用于读取位于resources目录下的资源文件。 首先,我们需要将资源文件放置在resources目录下。resources目录是Java项目中通常用来存放资源文件的目录,它通常位于项目的src/main目录下。 接下来,我们可以使用ResourceBundle类来读取资源文件。使用ResourceBundle的getBundle()方法来获取资源文件的实例,该方法接受两个参数:资源文件的基名(不含后缀)和Locale对象。 在代码中,我们可以通过ResourceBundle的getString()方法来获取资源文件中对应的值,该方法接受一个参数,即资源文件中的键。 以下是一个示例代码: ```java import java.util.Locale; import java.util.ResourceBundle; public class ResourceBundleExample { public static void main(String[] args) { // 读取默认资源文件 ResourceBundle bundle = ResourceBundle.getBundle("messages"); String hello = bundle.getString("hello"); System.out.println(hello); // 读取带有Locale的资源文件 Locale locale = new Locale("zh", "CN"); ResourceBundle cnBundle = ResourceBundle.getBundle("messages", locale); String helloCN = cnBundle.getString("hello"); System.out.println(helloCN); } } ``` 在上面的示例中,我们假设在resources目录下有一个messages.properties资源文件(默认资源文件),和一个messages_zh_CN.properties资源文件(中文资源文件)。 当我们调用getString("hello")时,会分别从默认资源文件和中文资源文件中获取到相应的值。 希望这个简单的示例能够帮助你理解如何使用ResourceBundle类来读取resources目录下的资源文件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值