【问题标题】:Java Shared Resources stored to wrong pathJava共享资源存储到错误的路径
【发布时间】:2015-01-17 00:46:34
【问题描述】:

我有两个项目共享一个公共资源文件夹。我使用这个命令来访问这些文件:

getClass().getClassLoader().getResource("myResources.xml")

此语句返回一个无效的路径。事实上它返回:

project/shared-resources/target/classes/myResource.xml

但它应该返回

project/shared-resources/src/main/resource/myResource.xml

在构建过程中,所有资源都复制到此目标/类路径,因此我能够加载这些文件,但更改的内容会被覆盖,这是不想要的。

知道为什么会这样吗?

【问题讨论】:

  • 请澄清更改被覆盖
  • 另外,你必须开始区分你的源文件夹/文件和你编译的文件和资源。
  • @SotiriosDelimanolis 如果我更改加载资源的内容,下一个构建过程将覆盖 project/shared-resources/target/classes/myResource.xml 中的文件,其中包含一次在 project/shared -resources/src/main/resource/myResource.xml
  • 资源不是要写入的。

标签: java resources


【解决方案1】:

使用getClass().getClassLoader() 将从您的 路径加载资源。

项目/共享资源/src/main/

以上是您的源路径 - 没有类文件。

当您编译和运行您的应用程序时,类被编译到(并从中加载):

项目/共享资源/目标/类/

在您的 IDE(假设您正在使用一个)中,将资源(您的 resource/myResource.xml 文件)添加到构建过程中通常很简单,以便将其复制到目标中并进入相同的结构。

如果/当您部署/分发您的应用程序时,您需要这样做,因为src 路径通常不会包含在您的 jar、ear 或 war 文件等中。

【讨论】:

  • 以及如何访问源路径?
  • 它不是您构建的应用程序的一部分,因此您要么选择从文件系统加载它(而不是作为相对类路径资源),要么将它包含在您的构建中(并且让一个项目将另一个作为库依赖)。
猜你喜欢
  • 2018-07-18
  • 2019-05-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 2012-11-17
相关资源
最近更新 更多