java在战争中访问属性文件
我试图在战争中访问我的属性文件。代码正在工作,但当我将代码导出到war中并使用Fiddler使用POST(带有接受的输入)时,它找不到配置。财产。(NullPointerException)
输入和Web服务正在正确运行。只是想找到一种在使用war时编辑我的属性的方法
一些事实:
我做了一个检索属性类。它使用:
properties.load(this.getClass() .getResourceAsStream("/WEB-INF/config.properties"));
我的属性文件路径:
/com.webapp/WebContent/WEB-INF/config.properties
我正在尝试在以下位置使用属性数据:
String url = RetreiveProperties.getUrl(); String driver = RetreiveProperties.getDriver(); String username = RetreiveProperties.getUsername(); String password = RetreiveProperties.getPassword(); // line below causes the NullPointerException Class.forName(driver);
使用的吸气剂:
public static String getDriver() { return driver = properties.getProperty("jdbc.driver"); }
部署war时,属性文件位于:
webapps\com.webapp1\WEB-INF\config.properties
配置。特性:
jdbc.url = jdbc:postgresql://127.0.0.1:2222/gisdb jdbc.driver = org.postgresql.Driver jdbc.username = postgres jdbc.password = admin
我已经试着找出here和here给出的例子。由于未加载属性文件,因此一直提供NullPointerException
有人能把我推向正确的方向吗
干杯
# 1 楼答案
如果该方法是静态方法,则getClass()方法将失败,并提示“无法从类型对象对非静态方法getClass()进行静态引用”
相反,您应该使用CurrentClass。班getClassLoader()。获取资源流
资料来源:here
# 2 楼答案
如果要从类路径加载属性文件,它必须位于war中的
WEB-INF/classes
目录中。(或在WEB-INF/lib
内的罐子内)。WEB-INF
目录本身不在类路径上如果您确保文件以
WEB-INF/classes/config.properties
结束,那么如果您将getResourceAsStream
调用更改为getResourceAsStream("/config.properties")
,则上述代码应该可以工作