有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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
    

我已经试着找出herehere给出的例子。由于未加载属性文件,因此一直提供NullPointerException

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

干杯

NullPointer in TomCat8


共 (2) 个答案

  1. # 1 楼答案

    如果该方法是静态方法,则getClass()方法将失败,并提示“无法从类型对象对非静态方法getClass()进行静态引用”

    相反,您应该使用CurrentClass。班getClassLoader()。获取资源流

    资料来源:here

  2. # 2 楼答案

    如果要从类路径加载属性文件,它必须位于war中的WEB-INF/classes目录中。(或在WEB-INF/lib内的罐子内)。WEB-INF目录本身不在类路径上

    如果您确保文件以WEB-INF/classes/config.properties结束,那么如果您将getResourceAsStream调用更改为getResourceAsStream("/config.properties"),则上述代码应该可以工作