如果普通应用程序仅仅读一个配置文件:
pro.load(ClassLoader.getSystemResourceAsStream("dbConfig.properties"));
语句就行.我用的jBuilder,但是如果构建web程序 (tomcat 6)
就只能用:
pro.load(this.getClass().getResourceAsStream("dbConfig.properties"));
否则出空指针异常.并且发现应用程序和web程序的 dbConfig.properties 文件的路径不相同,
应用程序需要把配置文件在classpath下,
web程序需要放到class文件的同级目录下.(是不是应用程序制定了classpath的关系?)疑问多啊!
应为我要用web构建,但是只想读取配置文件一边.本来该语句是写在静态块的 ,
但是用:ClassLoader就出空指针异常啊.jdk文档看不出来啊,想知道原因!!!!高手帮忙解惑,讲讲本质吧!!万分感谢!!还是我出错了?
pro.load(ClassLoader.getSystemResourceAsStream("dbConfig.properties"));
语句就行.我用的jBuilder,但是如果构建web程序 (tomcat 6)
就只能用:
pro.load(this.getClass().getResourceAsStream("dbConfig.properties"));
否则出空指针异常.并且发现应用程序和web程序的 dbConfig.properties 文件的路径不相同,
应用程序需要把配置文件在classpath下,
web程序需要放到class文件的同级目录下.(是不是应用程序制定了classpath的关系?)疑问多啊!
应为我要用web构建,但是只想读取配置文件一边.本来该语句是写在静态块的 ,
但是用:ClassLoader就出空指针异常啊.jdk文档看不出来啊,想知道原因!!!!高手帮忙解惑,讲讲本质吧!!万分感谢!!还是我出错了?
而web项目则不同,如tomcat则为“tomcat_home”
所以返回的是null我比较支持用第二种方法,
org.csj.resource.Property
.load(Property.class.getClassLoader().getResourceAsStream("org/csj/resource/text/text.properties"));
getSystemResourceAsStream是在jvm类路径下找资源。
应用程序:getResourceAsStream是在应用程序相对路径或者绝对路径找资源;web程序:getResourceAsStream是在应用服务器类路径或者绝对路径下找资源。
一般来说,只要你的路径对了,它是一定可以加载进来的
也就是说你的资源文件和类文件放到起一起的话,肯定可以通过调用pro.load(this.getClass().getResourceAsStream("dbConfig.properties"));