Maven构建抛出java.lang.NoClassDefFoundError

时间:2014-07-22 21:07:36

标签: java eclipse maven testing jacoco

解决:我的类资源名为TestCounter ... maven正试图测试它。将其重命名为CounterSwitch并且构建成功。

我对maven非常陌生,请耐心等待...我有一些测试在日食中运行良好,但在maven构建期间失败。

测试位于:src/test/java/main/*.java

测试使用以下测试类:src/test/java/**/*.java

测试还需要访问位于src/test/resources/packages/etc...

的资源

在我的资源范围内有.java源文件,我正在编译,但我正在使用JaCoCo分析测试。我使用相对路径的File对象加载这些资源,因为资源加载器坚持使用绝对路径并导致我的测试失败。

常识说相对路径会在构建后发生变化,这就是为什么maven会抛出NoClassDefFoundError,但是当遇到其中一个{时,它也会抛出异常{1}}文件......它可能正在尝试编译它,或者它可能只是巧合。

然而,该解决方案可能更方便,因为我不需要 在maven生命周期中运行这些测试,他们的功能测试更多地用于他们生成的结果并且对于他们的断言更少,但我不知道如何将它们列入黑名单。

我有两个问题:如何将这些文件从我的maven构建中隔离出来,这些文件是不受欢迎的,以及如何将这些文件包含在我的maven构建中?

我很感激我能得到的任何帮助......这里是我的pom.xml的相关表示(插件使它非常冗长)供参考,它几乎是我的默认配置不知道从哪里开始:

.java

堆栈追踪:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.genericpackage</groupId>
    <artifactId>genericartifact</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>genericartifact</name>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2 个答案:

答案 0 :(得分:1)

修正了问题很明显......类/ java文件被命名为TestCounter ... surefire正试图测试它们。将它们重命名为CounterSwitch,构建顺利完成。

答案 1 :(得分:1)

有同样的问题,修改了包括文件作为library(dplyr) df %>% group_by(key = a) %>% summarise(sum = sum(b), count = .N) 配置的一部分,如下所示:

maven-surefire-plugin