0

我正在尝试读取 .jar 文件中的初始文本文件。我尝试使用 ClassLoader 加载文件,但没有成功。奇怪的是,这种方式它在 Eclipse 中工作,但它没有作为单独的可执行 jar 文件。

现在我将尝试重现这种情况:

A类:

/**
 * Read initial file.
 *
 * @return initial file
 */
private SomeObject readInitialObject() {
    String path = "object/Welcome.xml";
    File f = new File(path);
    Reader r = new Reader(f);
    SomeObject o = r.read();
    return o;
}

类阅读器:

private File importedFile; 
public void read() {
...
 DocumentBuilderFactory dbFactory = DocumentBuilderFactory
                .newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(FileLoader.load(importedFile.
                                                           getPath()));
}

类文件加载器

/**
 * Load input stream.
 *
 * @param path file path
 * @return input stream
 */
public static InputStream load(final String path) {
    InputStream input = FileLoader.class.getResourceAsStream(path);
    if (input == null) {
        input = FileLoader.class.getResourceAsStream("/" + path);
    }

    return input;
}

.jar 文件:

收到您的建议,我将不胜感激。谢谢!

4

4 回答 4

1

分布式 jar 文件未获取我的 .txt 文件为例。

您需要指定相对于您正在使用的类的getResourceAsStream路径

于 2013-03-29T13:34:35.090 回答
0

在 jar 文件中,文件结构与您的实际结构略有不同。您可以打开 jar 以查看文件的确切路径。另请参阅http://docs.oracle.com/javase/tutorial/deployment/jar/build.html

于 2013-03-29T13:31:06.490 回答
0

问题可能是 Windows 不区分大小写,但在 jar 中,文件名区分大小写(如在 Linux 上)。进一步不要使用 File ,就像你使用的/那样 not \

所以我认为实际的文件有点不同。

于 2013-03-29T13:32:58.070 回答
-1

打开你的jar文件看看你有没有导出文件!-如果否 -> 再次将项目导出到 jar 文件并选择要导出的文件 - 如果是 -> 检查文件路径

于 2013-03-29T13:33:47.887 回答