我正在尝试创建读取属性文件的注释解析器。结构如下所示:
- 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/