【发布时间】:2018-02-20 19:16:15
【问题描述】:
假设您有 jar1 和 artifactId zoo,jar2 和 artifactId 动物。两个 jar 都有一个具有相同路径的资源文件(例如:/animals/animal.txt)。有没有办法从特定的 jar 中读取该文件?使用 getResourcesAsStream 也会返回第一个 jar,但有时我想要第二个 jar 的 animal.txt 文件。
【问题讨论】:
-
我想到的第一个问题是:为什么需要从另一个 JAR 中读取资源?并使用你自己的?此外,您阅读的顺序取决于类路径,这通常是不可预测的......除了这听起来很奇怪有两个不同的 jar 包含相同的资源,包括相同的路径等。?
-
简短的回答是否定的。事实上,这实际上是一个非常巧妙的技巧,可用于生成插件样式框架或不耦合 API 功能。您可以使用
ClassLoader#findResources在类加载器上下文中列出所有命名资源并加载它们,从而允许您动态定位运行时资源。至于你的实际问题。要么更改资源文件的名称,要么在文件中放置一个条目标记,以便您识别它实际上是哪个文件