del*_*ave 8 java configuration properties war
我已经在StackOverflow中搜索了"战争中的属性",但是没有一个结果适用于我的情况.
我正在使用Eclipse Galileo和GlassFish v3来开发一组Web服务.我正在使用具有以下结构的"动态Web项目"
Src
-java_code_pkg_1
-java_code_pkg_2
-com.company.config
--configfile.properties WebContent
-META-INF
-WEB-INF
--log4jProperties
--web.xml
--applicationContext.xml
--app-servlet.xml
Run Code Online (Sandbox Code Playgroud)
我想访问"java_code_pkg1"中的一个源文件中的"configfile.properties".我正在使用Spring Framework,一旦应用程序在服务器上启动,该文件就会被实例化.
我试过以下没有运气
getResourceAsStream("/com.company.config/configfile.properties");
getResourceAsStream("/com/company/config/configfile.properties");
getResourceAsStream("com/company/config/configfile.properties");
getResourceAsStream("/configfile.properties");
getResourceAsStream("configfile.properties");
getResourceBundle(..) didn't work either.
Run Code Online (Sandbox Code Playgroud)
当它不在WEB-INF/classes路径下时是否可以访问文件?如果是的话怎么样?
谢谢
Properties props = new Properties();
props.load(this.getClass().getResourceAsStream("/com/company/config/file.properties"));
Run Code Online (Sandbox Code Playgroud)
我在调试模式时工作.我可以在调试器中看到这些值,但是在执行"props.load"行之后,在进入它下面的灯之前,我得到一个NullPointerException.
那是一个不同的问题.至少现在我知道这是访问配置文件的方法.
谢谢您的帮助.
如果你在战争中,你的类路径"当前目录"是"WEB-INF/classes".简单地上升两个级别.
getResourceAsStream("../../com/company/config/configfile.properties");
Run Code Online (Sandbox Code Playgroud)
这太可怕但它确实有效.至少,它可以在tomcat,jboss和geronimo下工作,它今天起作用.
PS你的目录结构不是很清楚.也许它是:
getResourceAsStream("../../com.company.config/configfile.properties");
Run Code Online (Sandbox Code Playgroud)