Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在战争中访问属性文件_Java_Web Applications_Properties_War - Fatal编程技术网

Java 在战争中访问属性文件

Java 在战争中访问属性文件,java,web-applications,properties,war,Java,Web Applications,Properties,War,我试图在战争中访问我的属性文件。代码正在工作,但当我将代码导出到war中并使用Fiddler使用POST(带有接受的输入)时,它找不到config.properties。(NullPointerException) 输入和Web服务正在正确运行。只是想找到一种在使用war时编辑我的属性的方法 一些事实: 我做了一个检索属性类。它使用: properties.load(this.getClass() .getResourceAsStream("/WEB-I

我试图在战争中访问我的属性文件。代码正在工作,但当我将代码导出到war中并使用Fiddler使用POST(带有接受的输入)时,它找不到config.properties。(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
    
  • Config.properties:

    jdbc.url = jdbc:postgresql://127.0.0.1:2222/gisdb
    jdbc.driver = org.postgresql.Driver
    jdbc.username = postgres
    jdbc.password = admin
    
我已经试着找出所给的例子和答案。由于未加载属性文件,因此一直提供NullPointerException

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

干杯


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


如果您确保文件最终为
WEB-INF/classes/config.properties
如果您要从类路径加载属性文件,则将
getResourceAsStream
调用更改为
getResourceAsStream(“/config.properties”)

,则上述代码应该可以工作,它必须在war的
WEB-INF/classes
目录中。(或在
WEB-INF/lib
的jar内)。
WEB-INF
目录本身不在类路径上


如果您确保文件最终为
WEB-INF/classes/config.properties
如果您将
getResourceAsStream
调用更改为
getResourceAsStream(“/config.properties”)

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

相反,您应该使用CurrentClass.class.getClassLoader().getResourceAsStream


来源:

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

相反,您应该使用CurrentClass.class.getClassLoader().getResourceAsStream


来源:

如果你检查打包war文件的内部,属性文件的路径是什么?啊,忘了提及它。它位于C:\Users\myusername\Downloads\apache-tomcat-8.0.21-windows-x64\apache-tomcat-8.0.21\webapps\com.webapp1\WEB INF中如果你检查打包war文件的内部,属性文件的路径是什么?啊,忘了提一下它在C:\Users\myusername\Downloads\apache-tomcat-8.0.21-windows-x64\apache-tomcat-8.0.21\webapps\com.webapp1\WEB-INFI将我的属性文件放在:C:\Users\myusername\Downloads\apache-tomcat-8.0.21-windows-x64\apache-tomcat-8.0.21\webapps\com.webapp1\WEB-INF\classes\com\webapp.I正在使用properties.load(this.getClass().getResourceAsStream(“WEB-INF/classes/com/webapp/config.properties”);来获取该文件,但它仍然不起作用。我是否输入了错别字?P.S.C:\address是我查看war文件时存储属性文件的目录。@Camelaria如果将其放在该路径中,则需要调用getResourceAsStream(“com/webapp/config.properties”)嗯,将加载程序更改为/com/webapp/config.properties。仍然在Class.forName(驱动程序)处获取NullPointerException;。这是我第一次使用属性值的地方。@Camelaria请发布堆栈跟踪。它实际上是作为null或其他内容获得的流吗?我将属性文件放在:C:\Users\myusername\Downloads\apache-tomcat-8.0.21-windows-x64\apache-tomcat-8.0.21\webapps\com.webapp1\WEB-INF\classes\com\webapp中。我正在使用properties.load(this.getClass().getResourceAsStream(“WEB-INF/classes/com/webapp/config.properties”);来获取该文件,但它仍然不起作用。我是否输入了错别字?请注意,C:\地址是我查看war文件时存储属性文件的目录。@Camelaria如果将其放在该路径中,则需要调用getResourceAsStream(“/com/webapp/config.properties”)嗯,将加载程序更改为/com/webapp/config.properties。在Class.forName(driver);,仍然会得到NullPointerException。这是我第一次使用属性值的地方。@Camelaria请发布堆栈跟踪。它实际上是作为null或其他内容获得的流吗?