Maven java.lang.NoClassDefFoundError:org/yaml

Maven java.lang.NoClassDefFoundError:org/yaml,maven,apache-storm,Maven,Apache Storm,我是使用storm的新手,尝试提交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) 当遇到像您遇到的那样的类路径错误时,一个常见的

我是使用storm的新手,尝试提交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)

当遇到像您遇到的那样的类路径错误时,一个常见的问题是您可能会遇到来自可传递依赖项的冲突;i、 例如,至少有两个工件提供了未找到的类的不同版本,您需要排除冲突的工件。因此,您必须识别碰撞,例如在maven中:

mvn依赖项:树-Dverbose
然后查找冲突工件,在您的例子中是uri:

org/yaml/snakeyaml/constructor/BaseConstructor
标识maven坐标,groupId=org.yaml,artifactId=snakeyaml ,您会发现您案例中的工件“测试”提供了另一个snakeyaml,因此在该工件的依赖性中添加了一个排除项: ```


org.yaml
毒蛇
```


org.testng
testng
6.2
罐子
org.yaml
毒蛇

您是否遵循自述说明?你能帮忙吗
<exclusions>
  <exclusion>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
  </exclusion>
</exclusions>
<!-- 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>