我有一个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并将其放置在ProjectName / text文件夹中的相同bin文件夹和Requests.txt中时,同样无法访问提到的文本文件。

引发java.nio.file.NoSuchFileException。

我应该对可执行jar的相对路径进行任何更改吗?
我尝试了stackoverflow中提供的许多解决方案,但发现它对我的问题没有帮助/不适当。

请帮忙。提前致谢。

最佳答案

好吧,这取决于您当前的工作目录。如果您在Workspace / ProjectName下以java -jar bin /“ yourjarname” .jar的形式执行jar,则获取所需文件的路径应为“ text / Requests.txt”。您的IDE在Workspace / ProjectName下工作,这是您从Java中执行时的当前目录。

10-08 07:08
查看更多