Maven 测试因 ANTLR 类的 NoClassDefFoundError 失败

p.m*_*aes 8 java antlr maven

我正在使用main/resources/antlr-4.2-complete.jar外部库。我已经将它包含在我的类路径中。但是当我运行测试目标时,在 Eclipse 中我收到以下消息

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.048 sec <<< FAILURE!
checkGrammar(br.com.stoneage.GrammarTest)  Time elapsed: 0.011 sec  <<< ERROR!
java.lang.NoClassDefFoundError: org/antlr/v4/runtime/CharStream
Run Code Online (Sandbox Code Playgroud)

所以我知道测试目标不是寻找antlr-4.2-complete.jar。我该如何解决这个问题?

这是我的 POM 文件:

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.048 sec <<< FAILURE!
checkGrammar(br.com.stoneage.GrammarTest)  Time elapsed: 0.011 sec  <<< ERROR!
java.lang.NoClassDefFoundError: org/antlr/v4/runtime/CharStream
Run Code Online (Sandbox Code Playgroud)

Dun*_*nes 6

根据您的评论,我强烈建议您在 POM 中声明对 ANTLR JAR 的依赖关系。

使用 Maven 等工具的主要好处之一是您不再需要链接到磁盘上的物理 JAR。相反,您可以通过如下语句告诉 Maven 您想要使用 ANTLR:

<dependency>
    <groupId>org.antlr</groupId>
    <artifactId>antlr4</artifactId>
    <version>4.2</version>
    <!-- If you only need the JAR in test, add the following line too -->
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

使用http://mvnrepository.com/artifact/org.antlr/antlr4/4.2等工具搜索您需要的其他 JAR。

听起来你需要阅读有关 Maven 的内容。这是一个非常酷的产品,但如果没有一些基本知识,你就无法真正启动一个项目。