Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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 ClassLoader getResourceAsStream返回null_Java_Eclipse_Classpath_Classloader_Inputstream - Fatal编程技术网

Java ClassLoader getResourceAsStream返回null

Java ClassLoader getResourceAsStream返回null,java,eclipse,classpath,classloader,inputstream,Java,Eclipse,Classpath,Classloader,Inputstream,我的项目目录结构(在Eclipse中): 在驱动程序中,我有以下代码: public class Driver { public static void main(String[] args) { InputStream is = ClassLoader.getSystemClassLoader.getResourceAsStream("myconfig.txt"); if(is == null) System.out.printl

我的项目目录结构(在Eclipse中):

在驱动程序中,我有以下代码:

public class Driver {
    public static void main(String[] args) {
        InputStream is = ClassLoader.getSystemClassLoader.getResourceAsStream("myconfig.txt");
        if(is == null)
            System.out.println("input stream is null");
        else
            System.out.println("input stream is NOT null :-)");
    }
}
当我运行此命令时,会得到以下控制台输出:

input stream is null

为什么?我是否将
myconfig.txt
放在了错误的位置?我是否错误地使用了ClassLoader API?还有别的吗?提前谢谢

如果它在同一个包中,请使用

InputStream is = Driver.class.getResourceAsStream("myconfig.txt");
你的方式

InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("myconfig.txt");
它正在类路径的根目录中查找文件。你可以用

InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("com/me/myapp/myconfig.txt");

和中解释了搜索规则。

如果您正在使用Maven,请在BUILD标记下添加以下行。当您在服务器上运行webapp,但未引用服务器上的资源时,会出现此错误

因此,请将以下内容添加到POM.xml中,看看其中的神奇之处

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
            <include>fileName.txt</include>
        </includes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
            <include>fileName.wsdl</include>
        </includes>
    </resource>
</resources>

src/main/resources
真的
fileName.txt
src/main/resources
真的
fileName.wsdl
玩得开心

  • 而不是-

    InputStream=ClassLoader.getSystemClassLoader.getResourceAsStream(“myconfig.txt”)

  • 使用-

    InputStream is=ClassLoader.getSystemClassLoader.getResourceAsStream(“com/me/myapp/myconfig.txt”)

  • 注意: 在打包之前不需要提供源文件夹名称(src)

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
            <include>fileName.txt</include>
        </includes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <includes>
            <include>fileName.wsdl</include>
        </includes>
    </resource>
</resources>