Java jar文件在类路径中出现两次可以吗?

Java jar文件在类路径中出现两次可以吗?,java,jar,classpath,Java,Jar,Classpath,我在文件夹中有一堆JAR,为了简化类路径设置,我使用了新的(在Java 6中)类路径通配符语法: CLASSPATH=“:/$JARS/*” 它将拾取$jars目录中的所有jar。到目前为止还不错 但是,在该目录中有一个jar,我需要首先出现在类路径中,通配符语法的文档声明jar的顺序依赖于实现,不能依赖 我想做的是添加一个jar,我需要首先显式地出现在通配符前面: CLASSPATH=“:/$JARS/first.jar:/$JARS/*” 这意味着first.jar将在类路径中出现两次,首先

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

CLASSPATH=“:/$JARS/*”

它将拾取$jars目录中的所有jar。到目前为止还不错

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

我想做的是添加一个jar,我需要首先显式地出现在通配符前面:

CLASSPATH=“:/$JARS/first.jar:/$JARS/*”

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

是的,我知道我可以先将
放在另一个目录中,以避免出现问题,但我只想说,这样做会带来很多麻烦,我不想处理这些麻烦(我正在处理第三方产品)

编辑:
我需要首先显示jar,因为它包含一些XML配置文件(作为资源加载),需要覆盖另一个jar(由第三方供应商提供)中同名的XML文件。只是想澄清一下,
first.jar
是我控制的唯一jar。目录中的所有其他JAR均由第三方供应商提供。

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

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

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


关于这个问题的更多信息:

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


关于这个问题的更多信息:

为什么你需要它先出现?@GuillaumePolet我编辑了我的问题以回应你的评论。然后,一个更简洁的解决方案是将你的资源放在一个专用文件夹/com/mycompany/README.txt中(仅举一个例子)因此,您可以确定加载的是您的资源。为什么需要首先显示它?@GuillaumePolet我编辑了我的问题以回应您的评论。然后,一个更简洁的解决方案是将您的资源放在一个专用文件夹/com/mycompany/README.txt中(仅举一个例子)这样你就可以确定加载的实际上是你的。这可能会导致问题。我是第一手碰到的。如果路径中有两次相同的依赖项,则可能会遇到问题。这些问题是断断续续的,要找到根本原因令人头痛。有时一个jar的两个版本可能看起来是相同的,但是一个类可能是用不同的jdk重建的,或者可能是代码发生了变化。最好不要把它留给偶然的机会,只放在那里一次。拥有两个版本的同一个jar不同于拥有两个版本的同一个jar(这是这里的问题)。如果您在版本上有问题,我建议使用模块化系统,如OSGi。这可能会导致问题。我是第一手碰到的。如果路径中有两次相同的依赖项,则可能会遇到问题。这些问题是断断续续的,要找到根本原因令人头痛。有时一个jar的两个版本可能看起来是相同的,但是一个类可能是用不同的jdk重建的,或者可能是代码发生了变化。最好不要把它留给偶然的机会,只放在那里一次。拥有两个版本的同一个jar不同于拥有两个版本的同一个jar(这是这里的问题)。如果您在版本上有问题,我建议使用模块化系统,如OSGi。