关于 ResourceBundle.getBundle("myresource") 出错的处理
2015-04-05 10:10
417 查看
摘自: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中包含中文
通过命令
再如果想将unicode编码表示的.properties文件转换回中文,可以用到native2ascii的-reverse选项即可。
如果发生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
相关文章推荐
- ResourceBundle.getBundle("myresource")的意义
- ResourceBundle.getBundle("myresource")的意义
- ResourceBundle.getBundle("myresource")的意义
- ResourceBundle.getBundle("myresource")
- ResourceBundle.getBundle("myresource") 读取不到资源
- ResourceBundle.getBundle("myresource") 读取不到资源
- 【JAVA】关于java中 类.class.getResource("/").getPath()获取路径有空格的问题
- 关于 InputStream in = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties")简单介绍
- 关于[[NSBundle mainBundle] pathForResource:@"name" ofType:@"type"]找不到指定文件的解决办法
- 关于[[NSBundle mainBundle] pathForResource:@"name" ofType:@"type"]找不到指定文件的解决办法
- Thread.currentThread().getContextClassLoader().getResourceAsStream("myConfig.xml"));//在src下寻找myC
- 关于[[NSBundle mainBundle] pathForResource:@"name" ofType:@"type"]找不到指定文件的解决办法
- 关于InputStream in = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties")的介绍
- 关于[[NSBundle mainBundle] pathForResource:@"name"
- javaweb网上书店之分页技术---有get方法进行查询分页,而URL中包含"%"的出错处理
- filepath = XmlUtils.class.getClassLoader().getResource("users.xml").getPath();无法处理空格( )
- 关于"iexplore.exe出错"处理
- 关于getResource("/")的读取路径问题
- ResourceBundle.getBundle("baseName")的使用
- ResourceBundle.getBundle("baseName")的使用