使用 *.properties 文件,發生下面的錯誤,但是 PlatForm.properties 放置路徑很正確,放在了 classes 下。
java.util.MissingResourceException: Can't find bundle for base name PlatForm, locale zh_CN
?????? at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
?????? at java.util.ResourceBundle.getBundleImpl(Unknown Source)
?????? at java.util.ResourceBundle.getBundle(Unknown Source)
?
上述錯誤,首先懷疑是路徑不對或者是不能查找 .properties 所在的路徑。這樣,就用 PropertyResourceBundle 進行加載,它可以指定 InputStream 。如下:
public static ResourceBundle loadProperties(String path){
?????? ?? System.out.println("path : " + path);
?????? ?? System.out.println((new File(path + "WEB-INF\\classes\\" + file + ".properties")).getAbsolutePath());
?????? ?? FileInputStream fis=null;
?????? try {
????????????? fis = new FileInputStream(new File(path + "WEB-INF\\classes\\" + file + ".properties"));
?????? } catch (FileNotFoundException e) {
????????????? // TODO Auto-generated catch block
????????????? e.printStackTrace();
?????? }
ResourceBundle ?reb =null;
?? try {
????????????? ?? reb = new PropertyResourceBundle(fis);
?????? } catch (IOException e) {
????????????? // TODO Auto-generated catch block
????????????? e.printStackTrace();
?????? }
?????? ?? return reb;
?? }
測試后,錯誤如下:
java.lang.IllegalArgumentException: Malformed \uxxxx encoding.
?????? at java.util.Properties.loadConvert(Unknown Source)
?????? at java.util.Properties.load(Unknown Source)
懷疑是文件編碼不對,隨更換文件編碼多種,錯誤依舊。
然后,仔細查看 .properties 文件,發現有如下一行配置:
userErrPage=D:\eclipse\workspace\TestStruts\common\userPageErr.jsp
隨將“ \ ”更改為“ \\ ”,錯誤消失。
這次是非常幸運的碰到了 \u 了,呵呵。