java - 如何使用相对路径读取可执行jar之外的文本文件

标签 java executable relative-path executable-jar

我有一个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/

相关文章:

python - 如何将 .pyc 文件转换为 .exe 文件

.net - .Net Windows 服务的相对路径问题..?

gwt - 部署我的 Web 应用程序时出现路径问题

扩展抽象类的Java过程

c# - ASP.net c# 试图在服务器上运行可执行文件

java - 使用 Tomcat 8.0 配置 JPA(Hibernate)

c - 如何在 C 中将一段内存标记为可执行?

php include语句无法打开流到当前目录上方目录中的文件

java - SERVER_ERROR : [code] 1675030 [message]: Error performing query

java - 小/大字节序