我正在尝试在 war 中访问我的属性文件。代码正在工作,但是当我将代码导出到 war 中并使用 Fiddler 使用 POST(带有接受的输入)时,它找不到 config.properties。 (空指针异常)
输入和网络服务运行正常。只是想找出一种在使用 war 时编辑我的属性的方法。
一些事实:
我创建了一个 RetreivePropertiesClass。这使用:
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);
setter/getter 使用:
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。
有人能把我推向正确的方向吗?
干杯!
最佳答案
如果要从类路径加载属性文件,它必须位于 war 内的 WEB-INF/classes
目录中。 (或者在 WEB-INF/lib 内的 jar 内)。 WEB-INF
目录本身不在类路径上。
如果您确保文件最终为 WEB-INF/classes/config.properties
,如果您将 getResourceAsStream
调用更改为 ,则上述代码应该可以工作getResourceAsStream("/config.properties")
关于java - 在 war 中访问属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31103118/