關於 ResourceBundle.getBundle("myresource") 出錯的處理


摘自:http://blog.csdn.net/luoxiafei/article/details/6657573


如果發生ResourceBundle.getBundle("myresource") 讀取不到資源文件時,需要注意下面問題.

1,java project 

僅僅需要把myresource.properties文件放在src下,如果是放在package下,則程序的filename應該package/myresource
2,j2ee的web project

1,myresource.properties要放在WEB-INF的classes下,

2,如果是使用jar來執行讀取資源文件時,該jar需要添加在lib下面,不僅僅是由IED(eclipse)配置的classpath


解釋:getBundle加載資源文件時,會讀取當前應用的classLoader,遍歷當前的classloader找出classpath,進行資源文件的綁定,如果找不到則會報出

java.util.MissingResourceException。

關鍵在於,如果使用eclipse配置應用,而且是將lib託管給elipse去加載,那麼eclipse中啓動tomcat時,應用的加載lib下的classloader和

tomcat讀取應用後加載的class就不會是同一個。

tomcat啓動時,根據tomcat配置的jre,加載應用。而且應用的lib託管給eclipse,由elipse設定的jre加載lib下的jar。此時就會有2個jre環境。

解決方法是:把所有jar放到WEB-INF的lib下,由容器自己加載。當然也要在此加載到classpath下,項目編譯需要。



如果需要讀取中文,則不能在properties文件輸入後直接讀取,而需要用到jdk中的轉換工具native2ascii,這個工具會將非ascii字符轉換爲unicode編碼表示。

例如文件a.txt中包含中文

version=1.3版本
codename=dolphine


通過命令 

native2ascii.exe -encoding utf8 a.txt a.properties

得到轉換以後的文件a.properties

version=1.3\u7248\u672c
codename=dolphine


再如果想將unicode編碼表示的.properties文件轉換回中文,可以用到native2ascii的-reverse選項即可。

native2ascii.exe -reverse -encoding utf8 a.properties a.txt


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章