有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在可执行jar中给出相对路径?

我有一个Spring应用程序,我正在作为一个应用程序部署。罐子

应用程序必须写入位于/src中的文件夹(确切地说是/src/main/resources/patches)。我在代码中直接有这个路径

在应用中。属性:PATCH_DIR = src/main/resources/patches

应用程序还必须从src/main/resources/myJson.json读取json文件,路径也直接写入代码中

在部署之前,当从IDE运行时,一切都很顺利,应用程序可以看到文件和文件夹并正确地读写

在建造之后。jar路径更改时,文件位于myJar.jar/BOOT-if/classes/myJson.json,文件夹分别位于myJar.jar/BOOT-if/classes/patches

我如何在代码中指定这些路径,即使在构建jar之后,它们仍然与我的应用程序相关


编辑:我可以将文件的路径指定为:PatchApplication.class.getClassLoader().getResource("myJson.json").getPath();

这应该可以解决这个问题,因为路径是相对于类的,而不是相对于项目的根的,但是它并不能改善任何东西


共 (2) 个答案

  1. # 1 楼答案

    一般来说,所有的类都会进入jar中的classes文件夹

    在src/main/java之后结束的所有类都转到/classes/folder 同样,所有的资源文件 你的源文件夹有src/main/java/com/mypack/ABC。java,您将在jar中以/classes/com/mypack/ABC的形式找到它。班级

    尝试使用/classes/patches和/classes/myJson。json

    这应该行得通

  2. # 2 楼答案

    您应该在文件系统中指定路径,而不是文件系统中的路径。罐子当您运行应用程序时,它将访问给定路径