getResource()找不到文件?

时间:2016-04-19 23:59:17

标签: java file io directory

当尝试在Eclipse中加载文件时,文件加载正常,但是当我使用jar-splice将项目打包到.JAR文件时,似乎应用程序无法再找到其资源文件。

Here's the error thrown when the application is run

以下是加载文件的方法:

public static File loadFile(String path) throws FileNotFoundException
{
    InputStream stream;

    stream = FileUtil.class.getClassLoader().getResourceAsStream(path);
    System.out.println("Stream = " + stream); //Debug purposes


    File file = new File(FileUtil.class.getClassLoader().getResource(path).getFile());
    if (!file.exists())
    {
        System.err.println("Path: " + FileUtil.class.getClassLoader().getResource(path).getPath()); //Also debug purposes
        throw new FileNotFoundException();
    }

    return file;
}

使用这两个System.out.printlns,很明显应用程序无法根据该路径找到该文件,但是如果您查看该图片,那么该路径正是它所查找文件所在的位置。我很困惑,因为之前从未发生过这种情况,而它所说的无法找到文件的路径正是它的确切位置。任何人的想法?

1 个答案:

答案 0 :(得分:0)

  

这是文件的方法

这是既不能也不能将资源加载为文件的方法。是不可能的。资源不是文件,不存在于文件系统中。你必须重新设计它才能返回一个URL或一个InputStream,因为你可以直接从Class或ClassLoader获取它们,你根本不需要这个方法。