java - Run As JUnit - ClassNotFoundException - BuildCommand 修复导致类解析问题
问题描述
这是我的设置:
日食氧气
使用 Maven 3.3 构建和部署,其中包括单元测试的这些特定依赖项:
- JUnit 4.4
- 模拟 1.9.5
我创建了一个 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”问题之前拥有干净的工作空间时,这尤其令人沮丧。
解决方案
这些额外的依赖需要添加到 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 文件也可以作为外部库添加,但每次创建项目时都需要这样做。
推荐阅读
- angular - 在 Angular2+ 中将 Web-Worker 拆分为多个 Typescript 文件
- python - Pandas DataFrame 高级索引
- lotusscript - 如何将 Lotus 范围值放入数组
- javascript - 如何在组件中将“.json”文件显示为文本以便可以复制和粘贴?
- excel-formula - 带有表引用的 Sumproduct 返回 #Value!错误
- python - pytorch.empty 函数中的未初始化数据是什么
- html - 如何在 flexbox 列项中赋予 div 100% 的高度?
- ios - 从自定义 UIViewController 导航到 TabBarController 而不使用 segue
- php - 在 PHP 中正确地对 FLOAT 数进行算术运算
- google-cloud-platform - 为什么我在谷歌云注册期间不能使用我现有的付款资料?