我有一个Spring应用程序,我将其部署为.jar。
应用必须写入位于/ src(精确/src/main/resources/patches
)的文件夹。我直接在代码中使用此路径。
在application.properties中: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();
这应该可以解决问题,因为路径是相对于类而不是项目的根,但它并没有改进任何东西。
答案 0 :(得分:0)
您应该在文件系统中指定一个路径,而不是.jar中的路径。当您运行应用程序时,它将访问给定的路径。
答案 1 :(得分:0)
通常所有课程都会转到jar中的 classes 文件夹。
在src / main / java之后结束的所有类都转到/ classes /文件夹 和所有资源文件类似 例如。你的源文件夹有src / main / java / com / mypack / ABC.java,你可以在jar中找到/classes/com/mypack/ABC.class。
尝试使用/ classes / patches和/classes/myJson.json。
这应该有效