java - 在 war 中访问属性文件

标签 java web-applications properties war

我正在尝试在 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
    

我已经尝试计算给出的示例 herehere 。由于未加载属性文件,因此不断给出 NullPointerException。

有人能把我推向正确的方向吗?

干杯!

NullPointer in TomCat8

最佳答案

如果要从类路径加载属性文件,它必须位于 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/

相关文章:

java - Apache shiro Web 应用程序索引页面作为默认页面

c# - 属性 getter/setter 的方法命名是否在 IL 中标准化?

python - 为什么属性包装的成员列表显示意外的值?

Java文件的相对路径

java - 在java中写入文件 - 关闭或刷新

java - Spring-Boot:尝试从 @PostConstruct 方法抛出自定义 RunTimeException 失败

java - 如何确定 JAVA 中 jdbcTemplate 的 sql 查询类型?

java - 每当执行 catch block 时如何设置默认操作?

java - 如何管理数据库和Web应用程序之间的时区(本地时间的现有数据库)

java - 如何将 Apache derby 嵌入到 Web 应用程序中