1

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

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

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

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

4

4 回答 4

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 的代码已修复。

于 2013-10-28T14:23:37.457 回答
2

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

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

于 2014-07-31T19:39:43.573 回答
0

如果 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

希望这可以帮助。

于 2013-10-28T13:42:05.557 回答
0

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

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

可能的版本不匹配情况包括更新有缺陷的新版 Mule(可能只是更新到错误或损坏的 POM),它指定了不兼容的库版本,或者由于添加或更新与 Mule 无关的内容。

分析建议:

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