运行 eclipse 中的 junit 测试时出现 ClassNotFoundException
ClassNotFoundException when running a junit test in eclipse
我真的很绝望为什么会出现这个异常?我正在 class MyTestIT
运行ning 测试。还有什么 class 没有找到? Class 我 运行...我尝试在 Eclipse 中清理并再次构建它,但没有成功
Class not found it.mytest.MyTestIT
java.lang.ClassNotFoundException: it.mytest.MyTestIT
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:685)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:421)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
PS:我忘了补充说它一直在工作。但是今天刚开eclipse,这里没法运行测试。使用 Maven 它仍然有效
你能在这里写MyTestIt
class吗?如果没有,请尝试查看您的代码是否存在这些问题之一。
https://docs.oracle.com/javase/7/docs/api/java/lang/ClassNotFoundException.html
似乎是某种奇怪的日食问题,我们很难诊断,但蛮力方法是这样的:
如果你的项目有 Maven,只需从你的 Eclipse 工作区中删除你的项目(不要删除文件),然后从命令行执行:
mvn clean install eclipse:clean eclipse:eclipse
然后将您现有的项目重新导入回您的 Eclipse 工作区。在此程序后应该可以正常工作。
编辑
启动您的测试并切换到调试透视图。您将在 Debug 视图中看到您最近的启动。 Select 它并转到其属性(快捷键:Alt+Enter)。在 "command line" 部分,您应该看到 Eclipse 用于启动单元测试的确切命令。检查 class 路径是否正常。它可能只是一些奇怪的日食项目设置。 Maven 将为您的 运行 测试使用不同的 class 路径,这可能是 Eclipse 在错误的目录中查找您的单元测试。如果您 class 在 classspath 中,那么它一定可以工作。
我 运行 在同时使用 Eclipse 和 mvn
-on-the-command-line 处理项目时遇到了这个问题。
命令行启动的 mvn clean
删除了 ./target/
目录,Eclipse 的 JUnit 支持也依赖该目录来查找已编译的 JUnit 测试 classes。
我首先从命令行通过 运行 mvn test
解决了基于 Eclipse 的 ClassNotFoundException
。从此Eclipse又找到了测试class
从 Eclipse 项目中删除以下 files/folders:
.项目
.类路径
.设置
然后使用"Import -> Existing Maven Projects"重新导入项目。
这应该与 Peter 的回答具有相同的效果,只是不需要转到命令行。
检查项目是否正确构建。您可以在问题选项卡(Windows --> 显示视图 --> 问题)中进行检查。如果你看到 "project can not build due to some error"。然后先尝试解决错误。
检查您的 Project/bin 文件夹,是否有您的 .class。如果不是,则项目未正确构建。
进行清理构建。确保具有 junit classes.
的项目没有构建错误
这是一个常见问题,其中 junit 从 maven 测试 运行 成功,但从 eclipse junit 测试 运行ner 失败。
一个解决方案是手动添加一个相对较新的 junit jar 的外部本地副本到 eclipse 类路径的顶部
在您的项目属性构建路径或单元测试中运行时间配置。例如:
- 单击:项目 - 属性 - Java 构建路径 - 库 - 添加外部 JAR:
- Select 相对较新版本的本地 junit jar 在您的机器上
- 单击 "Order and Export" 选项卡 - 将 junit jar 移到顶部。 (申请并关闭)
您现在应该可以右键单击测试并 运行 作为 junit 测试成功。
这据称已在 2017 年作为 eclipse 错误修复"photon":
https://bugs.eclipse.org/bugs/show_bug.cgi?id=525844
然而,2018/2019 年仍有数十篇帖子仍在发生。
上面的修复是一种变通方法——它不是 Eclipse 用户应该知道的标准配置设置。
其他一些变通办法对我不起作用:
- 删除 .project/.classpath/.settings 等元文件
- 创建新的 eclipse 工作区
- 运行ning mvn eclipse 目标
- 运行宁组合:多个项目清理,多个 mvn 清理,重新打开 eclipse 两次
如果此问题仅发生在 Eclipse 中,对所选项目执行命令项目 -> 清理... 可能会有所帮助。
我真的很绝望为什么会出现这个异常?我正在 class MyTestIT
运行ning 测试。还有什么 class 没有找到? Class 我 运行...我尝试在 Eclipse 中清理并再次构建它,但没有成功
Class not found it.mytest.MyTestIT
java.lang.ClassNotFoundException: it.mytest.MyTestIT
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:685)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:421)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
PS:我忘了补充说它一直在工作。但是今天刚开eclipse,这里没法运行测试。使用 Maven 它仍然有效
你能在这里写MyTestIt
class吗?如果没有,请尝试查看您的代码是否存在这些问题之一。
https://docs.oracle.com/javase/7/docs/api/java/lang/ClassNotFoundException.html
似乎是某种奇怪的日食问题,我们很难诊断,但蛮力方法是这样的: 如果你的项目有 Maven,只需从你的 Eclipse 工作区中删除你的项目(不要删除文件),然后从命令行执行:
mvn clean install eclipse:clean eclipse:eclipse
然后将您现有的项目重新导入回您的 Eclipse 工作区。在此程序后应该可以正常工作。
编辑
启动您的测试并切换到调试透视图。您将在 Debug 视图中看到您最近的启动。 Select 它并转到其属性(快捷键:Alt+Enter)。在 "command line" 部分,您应该看到 Eclipse 用于启动单元测试的确切命令。检查 class 路径是否正常。它可能只是一些奇怪的日食项目设置。 Maven 将为您的 运行 测试使用不同的 class 路径,这可能是 Eclipse 在错误的目录中查找您的单元测试。如果您 class 在 classspath 中,那么它一定可以工作。
我 运行 在同时使用 Eclipse 和 mvn
-on-the-command-line 处理项目时遇到了这个问题。
命令行启动的 mvn clean
删除了 ./target/
目录,Eclipse 的 JUnit 支持也依赖该目录来查找已编译的 JUnit 测试 classes。
我首先从命令行通过 运行 mvn test
解决了基于 Eclipse 的 ClassNotFoundException
。从此Eclipse又找到了测试class
从 Eclipse 项目中删除以下 files/folders:
.项目 .类路径 .设置
然后使用"Import -> Existing Maven Projects"重新导入项目。
这应该与 Peter 的回答具有相同的效果,只是不需要转到命令行。
检查项目是否正确构建。您可以在问题选项卡(Windows --> 显示视图 --> 问题)中进行检查。如果你看到 "project can not build due to some error"。然后先尝试解决错误。
检查您的 Project/bin 文件夹,是否有您的 .class。如果不是,则项目未正确构建。
进行清理构建。确保具有 junit classes.
的项目没有构建错误这是一个常见问题,其中 junit 从 maven 测试 运行 成功,但从 eclipse junit 测试 运行ner 失败。
一个解决方案是手动添加一个相对较新的 junit jar 的外部本地副本到 eclipse 类路径的顶部 在您的项目属性构建路径或单元测试中运行时间配置。例如:
- 单击:项目 - 属性 - Java 构建路径 - 库 - 添加外部 JAR:
- Select 相对较新版本的本地 junit jar 在您的机器上
- 单击 "Order and Export" 选项卡 - 将 junit jar 移到顶部。 (申请并关闭)
您现在应该可以右键单击测试并 运行 作为 junit 测试成功。
这据称已在 2017 年作为 eclipse 错误修复"photon":
https://bugs.eclipse.org/bugs/show_bug.cgi?id=525844
然而,2018/2019 年仍有数十篇帖子仍在发生。
上面的修复是一种变通方法——它不是 Eclipse 用户应该知道的标准配置设置。
其他一些变通办法对我不起作用:
- 删除 .project/.classpath/.settings 等元文件
- 创建新的 eclipse 工作区
- 运行ning mvn eclipse 目标
- 运行宁组合:多个项目清理,多个 mvn 清理,重新打开 eclipse 两次
如果此问题仅发生在 Eclipse 中,对所选项目执行命令项目 -> 清理... 可能会有所帮助。