Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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 getClassLoader().getResourceAsStream(";./resources/config.properties";)返回null_Java - Fatal编程技术网

Java getClassLoader().getResourceAsStream(";./resources/config.properties";)返回null

Java getClassLoader().getResourceAsStream(";./resources/config.properties";)返回null,java,Java,大家好,我得到了错误 Caused by: java.lang.NullPointerException at java.util.Properties$LineReader.readLine(Properties.java:434) at java.util.Properties.load0(Properties.java:353) at java.util.Properties.load(Properties.java:341) at richard.file

大家好,我得到了错误

Caused by: java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:434)
    at java.util.Properties.load0(Properties.java:353)
    at java.util.Properties.load(Properties.java:341)
    at richard.fileupload.FileUploadController.loadProp(FileUploadController.java:48)
    ... 60 more
每当调用我的properties类时,这就是代码

 private Properties configProp = new Properties();

    @PostConstruct
    public void loadProp() {
        System.out.println("Loading properties");
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("../resources/config.properties");
        try {
            configProp.load(in);
            System.out.println(configProp.getProperty("destinationPDF"));
            System.out.println(configProp.getProperty("destination"));
            System.out.println(configProp.getProperty("fileList"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    private String destinationPDF = configProp.getProperty("destinationPDF");
    public String destination = configProp.getProperty("destination");
    private String username;
错误似乎来自这一行:

InputStream in = this.getClass().getClassLoader().getResourceAsStream("../resources/config.properties");
        try {
            configProp.load(in);
导致此错误的原因是什么?如何解决

上面的代码,应该指向属性文件,然后从中检索三个变量的值,它并没有达到

System.out.println(configProp.getProperty("destinationPDF"));
System.out.println(configProp.getProperty("destination"));
System.out.println(configProp.getProperty("fileList
在我得到错误之前

这是我的目录结构

如您所见,属性文件位于参考资料/中,我如何获得指向该文件的链接

编辑:

好的,因此它可以很好地与文件的完整链接配合使用:

configProp.load(new FileInputStream("D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/WEB-INF/config.properties"));

但是,无论我将文件放在项目中的什么位置,我都无法加载它,这是为什么?

这一行没有意义:

this.getClass().getClassLoader().getResourceAsStream("../resources/config.properties")

ClassLoader.getResourceAsStream()
使用从根包开始的包路径从类路径加载资源。根包上面没有任何内容。

您的config.properties文件位于classpath中的何处它看起来不像是一个maven项目,将资源移动到WEB-INF/resources,然后通过这个.getClass().getClassLoader().getResourceAsStream(“resources/config.properties”)访问它是一个使用glassfish服务器的netbeans JSF项目,我尝试了你的建议,但还是出现了同样的错误,我现在已经将其复制到src文件夹的根目录下,我使用InputStream in=this.getClass().getClassLoader().getResourceAsStream(“/config.properties”);但我仍然得到同样的错误,只是为了指出它。您可以使@Jigar Joshi建议与
getServletContext()一起使用‌​(s);但我认为这不是一个好的实践(尽管许多Web框架(ab)使用Web-INF进行配置)。这种配置文件应该在
WEB-INF/classes
中它所属的位置。只需将
config.properties
复制到
src
文件夹的根目录中即可。它将被复制到正确的位置,以便使用
getResourceAsStream(“/config.properties”)
访问,而不是复制到WEB-INF,否。复制到一个位置,该位置将使它出现在生成的webapp中的
WEB-INF/classes
文件夹中
src
中。您是否重建并重新部署了war/分解档案?IDE是否已将config.properties文件复制到
WEB-INF/classes
?单击按钮
Clean and Build
。在您的Netbeans项目中查找
dist
文件夹。用您最喜欢的zip工具打开war文件,告诉我们是否在其中看到
WEB-INF/classes/config.properties
文件。如果这样做,只需使用
this.getClass().getResourceAsStream(“/config.properties”)
this.getClass().getClassLoader().getResourceAsStream(“config.properties”)
(注意缺少的斜杠)是的,您确实有一个dist文件夹(在Windows资源管理器中查找:
D:\Documents\NetBeansProjects\printing~subversion\fileupload
清理并生成后)。在其他服务器上部署war文件时,硬编码绝对路径将不起作用。只需按照建议将
config.properties
放入
src
中,查看生成的war并使用我在前面的评论中提到的两种加载方法之一。