java.lang.NoClassDefFoundError:org / yaml

时间:2015-11-19 00:58:16

标签: maven apache-storm

我是使用风暴试图提交风暴启动器的新手,但是当我

mvn package 

我收到了这个错误

java.lang.NoClassDefFoundError: org/yaml/snakeyaml/constructor/BaseConstructor, 
compiling:(word_count.clj:16:1)
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3463)

POM file here in the link

3 个答案:

答案 0 :(得分:2)

我找到了这个解决方案:在pom文件中添加它。

<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.2</version>
<type>jar</type>
<exclusions>
    <exclusion>
        <artifactId>snakeyaml</artifactId>
        <groupId>org.yaml</groupId>
    </exclusion>
</exclusions>

但完全不知道为什么!

答案 1 :(得分:1)

当获得类似于你得到的ClassPath错误时,常见的问题是你可能会遇到来自传递依赖的冲突;即,至少有两个工件提供了“未找到类”的不同版本,您需要排除相互碰撞的工件。所以你必须确定碰撞,例如在maven做: mvn dependency:tree -Dverbose 并寻找碰撞神器,在你的情况下,uri: org/yaml/snakeyaml/constructor/BaseConstructor 标识maven坐标,groupId = org.yaml,artifactId = snakeyaml ,你会发现你的案例中的工件“测试”提供了另一个snakeyaml,因此添加了对该工件的依赖关系的排除: ```

<exclusions>
  <exclusion>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
  </exclusion>
</exclusions>

```

答案 2 :(得分:0)

<!-- just expanding/clarifying on the previous answer: -->
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.2</version>
            <type>jar</type>
            <exclusions>
                <exclusion>
                    <groupId>org.yaml</groupId>
                    <artifactId>snakeyaml</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>