存储到错误路径的Java共享资源
我有两个项目共享一个公共资源文件夹。我使用此命令访问这些文件:存储到错误路径的Java共享资源,java,resources,Java,Resources,我有两个项目共享一个公共资源文件夹。我使用此命令访问这些文件: getClass().getClassLoader().getResource("myResources.xml") 此语句返回的路径无效。事实上,它返回: 项目/共享资源/目标/类/myResource.xml 但它应该会回来 project/shared resources/src/main/resource/myResource.xml 在构建过程中,所有资源都复制到此目标/类路径,因此我可以加载这些文件,但更改的内容会被覆
getClass().getClassLoader().getResource("myResources.xml")
此语句返回的路径无效。事实上,它返回:
项目/共享资源/目标/类/myResource.xml
但它应该会回来
project/shared resources/src/main/resource/myResource.xml
在构建过程中,所有资源都复制到此目标/类路径,因此我可以加载这些文件,但更改的内容会被覆盖,这是不需要的
知道为什么会发生这种情况吗?使用getClass()。getClassLoader()
将从类路径加载资源
项目/共享资源/src/main/
上面是您的源路径-没有类文件
编译和运行应用程序时,类被编译到(并从中加载):
项目/共享资源/目标/类/
在IDE中(假设您正在使用IDE),将资源(您的resource/myResource.xml
文件)添加到构建过程中,以便将其复制到相同的结构中,通常是很简单的
如果/当您部署/分发应用程序时,您需要执行此操作,因为
src
路径通常不会包含在您的jar、ear或war文件等中。请澄清更改的内容会被覆盖。此外,您必须开始区分源文件夹/文件与编译的文件和资源。@SotiriosDelimanolis如果我更改加载的资源的内容,下一个生成过程将只覆盖project/shared resources/target/classes/myResource.xml中的文件,其中的once-in-project/shared resources/src/main/resource/myResource.xml文件不是要写入的。我如何访问源路径?它不是生成的应用程序的一部分,因此,您要么选择从文件系统加载它(而不是作为相对类路径资源),要么将其包含在构建中(并且让一个项目将另一个项目作为库依赖项)。