Mule Maven测试突然抛出ClassNotFoundException

时间:2013-10-28 13:34:00

标签: mule

在运行mvn clean test时,我的所有Mule Maven项目突然抛出此错误:

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

我可以为它添加一个依赖项,但我并不是真的必须这样做。

我的代码中没有改变。我正在使用Mule 3.4

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

 <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

希望这有帮助。

答案 3 :(得分:0)

Maven行为从一次运行到下一次运行是不可重现的:除了通用网络问题和存储库损坏问题之外,任何时候都可能会自动更新任何内容,从而破坏执行的任何步骤,即使您没有更改任何步骤你的文件。

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

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

分析建议:

  • Maven存储库中的哪些插件有快照版本?这些快照中的哪些是在错误首次出现的时候更新的?
  • 哪个库jar,以及哪些版本包含ParseException类?具体取决于具体版本或这些罐子的最新版本?