我有一个java项目结构,在eclipse中构建如下
--Workspace/ProjectName/bin(Where .class files exist)
|
/src(where source files i.e, java files exist)
|
/text(where a .txt file named Requests.txt present)
|
/common.properties(A property file)
当我使用
检查当前位置时URL location = FileToString.class.getProtectionDomain().getCodeSource().getLocation();
得到的o/p为文件:/D:/Workspace_Nandan/ProjectName/bin/
所以,我使用了代码
contents = new String(Files.readAllBytes(Paths.get("../ProjectName/text/Requests.txt")));
具有相对路径../ProjectName/text/Requests.txt,如上所述。 它工作正常,当我运行它时它正在读取文本文件。
但是当我将项目转换为代码中具有相同相对路径的可执行 jar 并将其放置在相同的 bin 文件夹和 Requests.txt 内时,情况也是一样的strong>ProjectName/text 文件夹无法访问提到的文本文件。
抛出java.nio.file.NoSuchFileException。
我应该对可执行 jar 的相对路径进行任何更改吗? 我尝试了 stackoverflow 中给出的许多解决方案,但发现它对我的问题没有用/合适。
请帮忙。提前致谢。
最佳答案
这取决于您当前的工作目录。如果您在 Workspace/ProjectName 下执行 jar 作为 java -jar bin/"yourjarname".jar ,则获取所需文件的路径应该是“text/Requests.txt”。您的 IDE 在 Workspace/ProjectName 下工作,当您从那里执行时,这是您在 java 中的当前目录。
关于java - 如何使用相对路径读取可执行jar之外的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42811435/