我有一个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
。
答案 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文件识别为属性文件,以便将它们捆绑在一起。