BeanComparator生成NoClassDefFoundError

时间:2015-11-08 13:27:15

标签: java comparator

只是尝试使用BeanComparator,但我得到了一些我无法解决的错误:

BeanComparator comparator = new BeanComparator("age");
        Collections.sort(myList, comparator);


        comparator = new BeanComparator("name");
        Collections.sort(myList, comparator);

    comparator = new BeanComparator("sickness");
    Collections.sort(myList, comparator);

运行此代码会产生以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections/comparators/ComparableComparator
    at org.apache.commons.beanutils.BeanComparator.<init>(BeanComparator.java:81)
    at testBeanComparator.TestBeanComparator.main(TestBeanComparator.java:23)

这是我设置为隔离BeanComparator问题的基本java应用程序。 我把罐子和maven包括在一起:

<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils-bean-collections</artifactId>
    <version>1.8.3</version>
</dependency>

知道造成这种混乱的原因吗?

提前谢谢。

2 个答案:

答案 0 :(得分:2)

确保commons-beanutils.jarcommons-logging.jar以及commons-collections.jar。我尝试了commons-beanutils-1.9.2 , commons-logging-1.2, commons-collections-3.2.1

答案 1 :(得分:0)

当您使用eclipse中的依赖项构建maven项目时,将构建jar并且输出jar文件是maven本地存储库作为您提到的位置。 在构建jar之后,如果需要执行jar文件,则应在类路径中添加commons-beanutils以执行jar。 ie)java -jar -cp 正如您所说,错过了依赖关系,因此尝试添加依赖项,您可以通过右键单击项目并单击构建路径并单击maven依赖项来验证该依赖项。 如果您通过手动运行mvn命令进行构建,那么在构建jar文件时缺少依赖项时会出现错误。