首页 > 解决方案 > Run As JUnit - ClassNotFoundException - BuildCommand 修复导致类解析问题

问题描述

这是我的设置:

日食氧气

使用 Maven 3.3 构建和部署,其中包括单元测试的这些特定依赖项:

我创建了一个 JUnit 测试类并将其添加到 ($project/src/test/java)。
我将此文件夹添加为源文件夹,然后执行了 Run As JUnit。

我收到以下错误:

Class not found 
java.lang.ClassNotFoundException: 
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:770)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:499)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:522)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)

我可以通过将以下内容添加到 .project 文件 Build Spec 来解决此问题:

   <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>

不幸的是,这似乎会导致多个错误出现在 Java Server Faces 等的标记下。

这真的是我的解决方案还是我可能错过了其他东西?当您在进行此更改以修复“Junit”问题之前拥有干净的工作空间时,这尤其令人沮丧。

标签: javaeclipsejunit

解决方案


这些额外的依赖需要添加到 pom.xml

<!-- JSF(MyFaces & Tomahawk) Dependencies -->
        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-api</artifactId>
            <version>1.1.5</version>
            <exclusions>
                <exclusion>
                    <artifactId>javax.servlet</artifactId>
                    <groupId>jstl</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-impl</artifactId>
            <version>1.1.5</version>
            <exclusions>
                <exclusion>
                    <artifactId>javax.servlet</artifactId>
                    <groupId>jstl</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.tomahawk</groupId>
            <artifactId>tomahawk</artifactId>
            <version>1.1.6</version>
            <exclusions>
                <exclusion>
                    <artifactId>javax.servlet</artifactId>
                    <groupId>jstl</groupId>
                </exclusion>
            </exclusions>
        </dependency> 

实际的 jar 文件也可以作为外部库添加,但每次创建项目时都需要这样做。


推荐阅读