我偶然遇到了一个有趣的错误,我需要你帮我弄清楚。
至于下面的代码,一切正常:
public class HelloWorld{
public static void main(String[] args){
System.out.println("hello world");
}
}
然后至于以下代码,有趣的事情来了。
import junit.framework.TestCase;
public class HelloWorld extends TestCase{
public static void main(String[] args){
System.out.println("hello world");
}
}
当我运行它时,它说
我知道当
jvm
加载 HelloWorld class
时,它会先加载 TestCase class
。所以我做了下面的代码段。public class HelloWorld {
public static void main(String[] args) throws ClassNotFoundException{
Class.forName("junit.framework.TestCase");
}
}
我不知道为什么?也许
TestCase
类不在我的类路径上?但是对于第二个代码段,我确保 TestCase
在我的类路径上。所以我的问题是:
TestCase
类? TestCase
类时无法找到或加载主类? 注意:我知道打印 helloworld 函数与用于 junit 测试的
TestCase class
没有任何关系,但我想弄清楚导致这个惊喜的原因。 最佳答案
Class.forName("junit.framework.TestCase");
返回与 TestCase 类关联的 Class 对象。它不设置类路径。
这就是你提出异常(exception)的原因:
您尝试加载不在类路径中的类。
要解决 Eclipse 的问题,请进入项目的属性窗口,然后在左侧有 Java Build Path 选项,进入并查看库选项卡。在这里,如果您希望 JUnit 位于类路径中,您应该添加 JUnit 库。
关于java - 为什么在扩展 TestCase 类时无法找到或加载主类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41179203/