【发布时间】:2018-09-16 12:22:19
【问题描述】:
我有 2 个项目; A 和 B(都是 Maven 项目)。 A 被打包为 jar 并作为依赖项添加到项目 B。这两个项目都有一个位于其 /resources 文件夹中的 config.properties 文件。在运行项目 B 时,位于项目 A 中的以下代码会加载 B 的资源文件夹:
Properties configProps = new Properties();
try {
InputStream in = classInA.class.getResourceAsStream("/config.properties");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = null;
while ((line = br.readLine()) != null)
{
String values[] = line.split("=", 2);
configProps.setProperty(values[0], values[1]);
line = br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
我在项目 B 的方法中有相同的代码块,并且可以正确访问 B 的 config.properties 文件。知道如何解决这个问题,或者您对如何在作为 jar 以及在 IDE (Intellij) 中运行时访问 jar 依赖项中的文件有更好的了解
编辑:包如下
- com.nicky.projectA
- com.nicky.projectB
由于项目 B 找到了一个 config.properties 文件,因此没有输出错误堆栈,但是它位于 com.nicky.projectB/resources 中,而不是 projectA 的资源文件夹中。
编辑:更改其中一个属性的文件名似乎已经解决了这个问题。我假设它首先搜索父项目并默认使用该属性文件,因为它们具有相同的名称。
【问题讨论】:
-
显然A和B都有不同的包,所以必须根据项目包指定正确的路径。请添加错误堆栈@Nicky
-
已编辑原始帖子。如果您需要更多信息,请告诉我。
-
根据已编辑的问题,您需要像这样指定 -> classInA.class.getResourceAsStream("com.nicky.projectB/resources/config.properties");
-
在 IDE 中直接从项目 B 运行以及在 IDE 中运行项目 A 时都会导致 NullPointerException。
-
您知道Properties.load 方法吗?它几乎完全符合您的代码正在做的事情。
标签: java maven properties resources classpath