.jar导出不了解项目文件夹中的相对路径

时间:2014-01-02 03:30:26

标签: java jar intellij-idea relative-path

我有一个java项目,我使用过Intellij Idea。该项目运行正常,我已将其导出为jar。 jar导出也正常运行,之外的一个问题:

我的项目中有一个额外的“resources”文件夹,并且有两个csv文件(非常简单的结构有两列)。在代码中,我使用了它们的相对路径如下

private static final __MY_FILE = new File("resources/filename.csv");

正如预期的那样,当我从IDE运行时,这可以正常工作。但是当我将项目导出为jar时,代码与FileNotFoundException崩溃,因为这些相对路径不再被视为相对于项目文件夹。

暂时,我已经提供了代码中的完整路径(即__MY_FILE = new File("/home/.../resources/filename.csv")),但这显然是一种灾难性的做法!

如何使用相对于项目文件夹的路径,以便导出的.jar有效?

目录结构如下:

networkmeasurements
    /matrixmethods
        /src
    /probabilisticmethods
        /src
    /utils
        /src
    /resources
        filename.csv

我正在尝试从filename.csv内的类中获取资源matrixmethods

2 个答案:

答案 0 :(得分:0)

您无法使用File,因为此文件在文件系统上不是独立存在的。相反,你需要getResourceAsStream(),例如

...
InputStream in = getClass().getResourceAsStream("/resources/filename.csv");
BufferedReader input = new BufferedReader(new InputStreamReader(in));
...

答案 1 :(得分:0)

http://www.jetbrains.com/idea/webhelp/resource-files.html可能有很好的洞察力。您必须让Intellij将.csv文件识别为属性文件,以便将它们捆绑在一起。