【问题标题】:Mule Maven tests throw ClassNotFoundException all of a suddenMule Maven 测试突然抛出 ClassNotFoundException
【发布时间】:2015-01-08 00:45:20
【问题描述】:

突然间,我所有的 Mule Maven 项目在运行 mvn clean test 时都抛出了这个错误:

java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException 在 org.mule.tck.junit4.AbstractMuleTestCase.(AbstractMuleTestCase.java:71)

我可以为它添加一个依赖项,但我真的不应该这样做。

我的代码没有任何变化。我正在使用 Mule 3.4

【问题讨论】:

    标签: mule


    【解决方案1】:

    你的类路径中需要commons-cli.jar,将此 Maven 依赖项添加到你的 pom 中

    <dependency>
            <groupId>commons-cli</groupId>
            <artifactId>commons-cli</artifactId>
            <version>1.1</version>
    </dependency>
    

    更新:添加 commons-cli 1.1 依赖后,OP 的代码已修复。

    【讨论】:

    • 问题在于 commons-cli 依赖项。 Mule 3.4 引入了 v 1.2,它没有测试依赖所依赖的 ParseException 类。
    • 尝试在上面添加这个依赖..这将带来 common-cli 类。查看我的版本号更新
    • 谢谢,我不介意添加它。但是骡子应该照顾这个吗?以前不用加也能用。
    • 即使专门添加 v 1.2 也不能解决问题。只有添加 1.1 才能修复它。
    • 是的,添加 1.1 修复了错误。但我仍然认为 Mule 应该处理它自己的传递依赖。
    【解决方案2】:

    问题描述及解决方法:http://ricston.com/blog/mule-classnotfoundexception-tests-commons-cli/

    简而言之,您可能有一个名为 commons-cli-1.2 的错误 JAR。删除它并重新运行您的 Maven 构建。在那之后你应该会很好。

    【讨论】:

      【解决方案3】:

      如果 POM 中的 fologin 依赖项可用。它应该工作正常。

       <dependency>
              <groupId>org.mule.tests</groupId>
              <artifactId>mule-tests-functional</artifactId>
              <version>3.4.0</version>
              <scope>test</scope>
          </dependency>
      

      然后使用 mvn clean compile 更新依赖。

      mvn eclipse:clean eclipse:eclipse clean compile
      

      希望这会有所帮助。

      【讨论】:

      • 我有:org.mule.testsmule-tests-functional${mule.version}test 其中 mule.version 是 3.4.0 但它没有 commons-cli 的传递依赖
      • 您在使用 Eclipse IDE 吗?如果是这样,您是否尝试过 mvn eclipse:clean eclipse:eclipse clean compile
      • 我会尝试,但我注意到 3.4 引入了 commons-cli v 1.2,它不再具有该类。而 v 1.1 可以。这似乎是 Mule 依赖版本的错误?
      • 我可以在 commons-cli v 1.2 grepcode.com/file/repo1.maven.org/maven2/commons-cli/… 中看到 ParseException 类。
      • 当我在引用的库中查看 jar 时,它不存在,只是一堆 groovy 包。
      【解决方案4】:

      Maven 行为无法从一次运行到下一次重现:除了一般的网络问题和存储库损坏问题之外,任何内容都可能随时自动更新,从而中断执行的任何步骤,即使您不更改任何内容你的文件。

      您关于某些 Apache Commons 库中的类的错误消息表明,Mule 应该使用的库版本(具有 ParseException 类的库)与其实际加载的库版本(没有该类并导致异常)之间存在分歧)。

      可能的版本不匹配情况包括更新到有缺陷的 Mule 新版本(可能只是更新到错误或损坏的 POM),它指定了不兼容的库版本,或者随机升级或降级存储库中的最新库版本作为添加或更新与 Mule 无关的内容的结果。

      分析建议:

      • 您的 Maven 存储库中的哪些插件具有快照版本?其中哪些快照在错误首次出现时进行了更新?
      • 哪些库 jar 以及哪些版本包含 ParseException 类?什么取决于特定版本或这些 jar 的最新版本?

      【讨论】:

        猜你喜欢
        • 2013-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多