BeanComparator 生成一个 NoClassDefFoundError

BeanComparator generates a NoClassDefFoundError

只是尝试使用 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)

这是我设置的基本 java 应用程序,用于隔离 BeanComparator 问题。 我将 jar 包含在 maven 中:

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

知道是什么原因造成的吗?

提前致谢。

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

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