1

我在一个文件夹中有一堆 jar,为了简化类路径设置,我使用了新的(在 Java 6 中)类路径通配符语法:

CLASSPATH=":/$JARS/*"

这将获取 $JARS 目录中的所有 jar。到现在为止还挺好。

但是,该目录中有一个 jar,我需要首先出现在类路径中,通配符语法的文档说明 jar 的顺序取决于实现,不能依赖。

我想做的是在通配符前面添加一个我需要首先明确出现的罐子:

CLASSPATH=":/$JARS/first.jar:/$JARS/*"

现在这意味着first.jar它将在类路径中出现两次,首先是显式引用,然后是通配符。这会给我带来什么问题吗?

是的,我知道我可以放入first.jar一个不同的目录来避免这个问题,但可以说这样做会涉及很多我不想处理的麻烦(我正在处理第 3 方产品) .

编辑: 我需要首先出现 jar,因为它包含一些 XML 配置文件(作为资源加载),这些文件需要覆盖另一个 jar 中具有相同名称的 XML 文件(由第 3 方供应商提供)。只是为了澄清,first.jar是我控制的唯一罐子。目录中的所有其他 jar 均由第 3 方供应商提供。

4

2 回答 2

5

是的,相同的 jars/类可以在类路径中出现多次。jvm 按顺序搜索它们。

此问题的更多信息:JVM 如何处理不同版本的重复 JAR

于 2012-05-09T14:12:10.057 回答
0

会有一些问题。有时 JVM 可能工作正常,但有时它可能无法识别任何 jar。最好在类路径中有一个 jar。

于 2012-05-09T14:10:24.853 回答