首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >commons-collections和commons-beanutils中的重复类

commons-collections和commons-beanutils中的重复类
EN

Stack Overflow用户
提问于 2013-01-19 00:01:03
回答 4查看 8.8K关注 0票数 17

来自Apache的两个Maven工件中有四个重复的类:commons-beanutils:commons-beanutils:1.8.3commons-collections:commons-collections:3.2.1

代码语言:javascript
复制
org.apache.commons.collections.ArrayStack
org.apache.commons.collections.Buffer
org.apache.commons.collections.BufferUnderflowException
org.apache.commons.collections.FastHashMap

有没有可能用其他一些工件替换其中的一个,以避免这种重复?我试着用谷歌搜索,但没有找到任何解决方案。相当烦人的问题。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-01-19 00:23:21

在这种情况下,问题不是maven或exclusions (通常是问题所在),而是您很可能使用了错误的beanutils版本。

有一个版本的beanutils jar包含了bean集合,而另一个不包含。具有bean集合的beanutils的maven依赖关系包括commons集合。如果您自己正在使用commons集合,请使用的核心版本,并在maven依赖项中包含commons集合。

下面将对其进行一些解释:http://commons.apache.org/beanutils/

那一页是这样写的:

commons-beanutils.jar -包含所有内容commons-beanutils-core.jar -排除Bean集合类Commons -beanutils-- -仅Bean集合类主要commons-beanutils.jar对Commons集合has有一个可选的依赖项

票数 17
EN

Stack Overflow用户

发布于 2013-01-19 00:08:11

看看这篇文章,它被告知要使用link标签

更新

看看这个给link2

代码语言:javascript
复制
<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <artifactSet>
                <excludes>
                  <exclude>classworlds:classworlds</exclude>
                  <exclude>junit:junit</exclude>
                  <exclude>jmock:*</exclude>
                  <exclude>*:xml-apis</exclude>
                  <exclude>org.apache.maven:lib:tests</exclude>
                  <exclude>log4j:log4j:jar:</exclude>
                </excludes>
              </artifactSet>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>
票数 1
EN

Stack Overflow用户

发布于 2019-03-12 01:54:43

因此,基本上发生的情况是,您要么从错误配置的jar (两个都拉入,这是多余的)中拉入两个版本,要么从多个依赖中拉入一个版本,另一个拉入另一个版本,冲突!我称之为commons-beanutil的“奇怪的发布系统”问题,因为maven不容易处理这种模式……我的一个修复方法是增加两个版本的依赖项的版本(在我的例子中是"commons-configuration"),或者手动指定commons-configuration的一个特定版本

所以这个mvn dependency:tree

代码语言:javascript
复制
[INFO] +- commons-configuration:commons-configuration:jar:1.6:compile
[INFO] |  +- commons-collections:commons-collections:jar:3.2.1:compile (version managed from 3.2)
[INFO] |  +- commons-digester:commons-digester:jar:1.8:compile
[INFO] |  \- commons-beanutils:commons-beanutils:jar:1.7.0:compile
[INFO] |  \- commons-beanutils:commons-beanutils-core:jar:1.8.0:compile

变成这样:

代码语言:javascript
复制
[INFO] +- commons-configuration:commons-configuration:jar:1.7:compile
[INFO] |  +- commons-collections:commons-collections:jar:3.2.1:compile
[INFO] |  +- commons-lang:commons-lang:jar:2.6:compile
[INFO] |  +- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] |  +- commons-digester:commons-digester:jar:1.8.1:compile
[INFO] |  \- commons-beanutils:commons-beanutils:jar:1.8.3:compile

尽管根据对另一个答案的评论,将"something“添加到使用commons-beanutil 1.9+的版本也可以。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14402745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档