java - 从包含的 jar 中读取属性文件

标签 java spring maven module

我正在尝试创建读取属性文件的注释解析器。结构如下所示:

 - annotationParserModule
    - declaration of interace
    - annotationParser

现在我的应用程序的结构如下:

 - main
   - java
   - resources
      - .properties file

我通过maven包含annotationParserModule,所以如果我没有记错的话,jar fire包含在我的项目中。

但是我需要读取 annotationParserModule 提供的 jar 之外的属性文件,这样可能吗?如果是这样,实现这一目标的正确方法是什么?

感谢您的帮助。

最佳答案

如果您要读取的资源包含在应用程序的类路径中(例如,在 jar 内,在 WEB-INF/lib 文件夹中,通过 -cp 传递的文件夹) java 命令等..)您可以使用 getResourceAsStream 读取该文件Class 类的方法。

为您的案例提供一个示例,其中包含如下文件夹:

- main
   - java
   - resources
      - yourconfig.properties

在您的 YourAnnotationParser 代码中,您可以拥有:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("yourconfig.properties");

如果文件是嵌套的:

- main
   - java
   - resources
      - iamafolder
          - yourconfig.properties

所以:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("iamafolder/yourconfig.properties");

顺便说一句,这是一个非常简单的响应,代码适用于常见场景,它在幕后所做的事情比“读取 jar 之外的文件”更复杂,但是要完全理解它,您需要了解 java类加载器和类路径起作用。

如果文件位于 java 类路径之外,您可以使用 File 类或 URL 类来读取内容。

关于java - 从包含的 jar 中读取属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55633229/

相关文章:

java - 通过注释实现@Autowired @Lazy @Components 的最佳方法?

java - 如何在没有内存问题的情况下使用 REST 模板 Spring MVC 获取大型 JSON

java - 如何在项目目录中包含 swagger 生成的类

eclipse - org.hibernate.InvalidMappingException : Could not parse mapping document from resource *. hbm.xml

java - 将树节点标记为已选择(Swing)

java - Android GridLayout 中将图像拉伸(stretch)至屏幕大小

java - 为什么 spring @Autowired 不能与 java 泛型一起工作

java - 我可以添加一个 java 包作为 Maven 依赖项吗?

java - 谷歌地图 : How to restore markers when resuming map activity

java - 地理上分散的服务器、PostgreSQL 和 JPA