学习《疯狂java讲义》第7.6节——国际化与格式化,遇到一个问题。
按照教材上的方法写了两个资源文件,运行程序的时候报异常:
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name mess, locale zh_CN
百度了一下,把问题给解决了。
原先我是把资源文件mess_zh_CN.properties直接放在了工程目录下
后来把这个文件拖到默认的包(与使用这个资源文件的Hello.java在一个包中)中,结果OK
原因:
(1)资源文件必须在类加载路径下,才能被找到。
(2)默认设置下,Eclipse会把源目录(src文件夹)下非java文件都拷贝到输出目录(bin文件夹)。在程序运行的时候,默认以输出目录(bin文件夹)作为classpath。
所以,如果把mess_zh_CN.properties放在工程目录下,它并不会被拷贝到输出目录,程序运行的时候就找不到这个文件。
可以自己做个测试:
(1)打开bin目录(备注:默认设置下,Eclipse界面不显示输出目录,需要用Windows的资源浏览器查看bin文件夹——最普通的查看方式)。
(2)在Eclipse中,在src文件夹下新建一个test.properties文件。可以看到,test.properties立即出现在了bin文件夹中。如果放到src的子文件夹下,还能保持目录结构不变。
(3)把test.properties拖到工程目录下,它立马就从bin文件夹下消失了。
以上截图为:Windows环境,Eclipse 4.3