当我们使用_mm256_shuffle_epi8
加载jar并在maven依赖项中添加jar时,类加载器如何确定jar的优先级?
maven如何加载jar?它是否遵循pom.xml中添加的依赖顺序的任何顺序?因为很少有jar会根据添加jar的顺序(顶部或底部)而有所不同。
我主要担心的是,我是否通过jar -classpath或maven依赖项中的top或maven依赖项中的bottom进行了添加。
答案 0 :(得分:1)
在类路径中的订单:
由罐子的指定顺序指定。类路径上“较早”的jar优先于指定为“较晚”的jar。假设您在classpath中指定了2个jar:
-cp jar1 jar2
现在,两个jar可能具有相同的包/类com.abc.Util.java
。因此,在运行时,将选择jar1中的类,因为在类路径中的jar2之前指定了jar1。
更多信息in this已发布
在Maven中订购:
通过在低优先级jar上方的pom.xml中指定较高优先级jar,可以在maven中实现与上述相同的行为。我已经在maven 3.x上对此进行了测试,如果您看到“依赖项”标签,则
如果您在pom.xml中更改顺序,您会看到顺序将会更改
总结:在-classpath
选项和maven中,指定的jar均优先获胜。所以你的观察是正确的。
在-cp
和maven组合的情况下订购:如果您同时使用两者,则-cp
选项将获得优先权。>
关于Maven的另一件事。因为,当您在pom.xml中指定依赖项时,它将自动带来它自己的依赖项(传递性依赖项)。
因此,假设您在pom中指定了依赖项A,它带来了依赖项X版本1.1。之后,在pom中定义依赖项B,它也需要依赖项X,但版本为1.2。现在您认为X会是哪个版本?
将要发布的版本取决于您首先指定的依赖项。如果首先指定jarA,则将出现X1.1,如果首先指定jarB,则将出现X1.2。
您可以在“依赖关系层次结构”选项卡中检查此行为,您会看到一些传递性依赖关系将被省略。例如:下面的其他jar会带来commons-io 2.6之前的