我有一个java项目,我使用了Intellij Idea。该项目运行良好,我已将其导出为 jar。 jar 导出也可以正常运行,除了有一个问题:
我的项目中有一个额外的“资源”文件夹,并且有两个 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
我正在尝试从 matrixmethods
内的类获取资源 filename.csv
。
最佳答案
您不能使用 File,因为该文件并不独立存在于文件系统上。相反,您需要 getResourceAsStream(),例如
...
InputStream in = getClass().getResourceAsStream("/resources/filename.csv");
BufferedReader input = new BufferedReader(new InputStreamReader(in));
...
关于java - .jar 导出不理解项目文件夹内的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20875898/