为什么在扩展TestCase类时无法找到或加载主类

时间:2016-12-16 07:21:15

标签: java junit

我偶然遇到了一个有趣的错误,我需要你帮助我弄明白。

对于下面的代码,每件事都可以:

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");
    }
}
  

线程中的异常" main" java.lang.ClassNotFoundException:junit.framework.TestCase

我不知道为什么?也许TestCase类不在我的类路径上?但至于第二个代码段,我确保{em>类路径上有TestCase

所以我的问题是:

  1. 为什么我无法加载TestCase课程?
  2. 在扩展TestCase类时,为什么无法找到或加载主类?
  3. 注意:我知道print helloworld 函数与TestCase class曾经用于 junit test 没什么关系,但我想找出导致这个惊喜的原因

1 个答案:

答案 0 :(得分:4)

  

我不知道为什么?也许TestCase类不在我的类路径上?但   对于第二个代码段,我确保TestCase在我的类路径上。

 Class.forName("junit.framework.TestCase"); 

返回与TestCase类关联的Class对象。它没有设置类路径。

这就是你提出异常的原因:

  

线程“main”中的异常java.lang.ClassNotFoundException:   的junit.framework.TestCase

您尝试加载不在类路径中的类。

要解决Eclipse的问题,请进入项目的属性窗口,然后在左侧,您有Java Build Path选项,进入内部并查看libraries选项卡。在这里,如果希望JUnit位于类路径中,则应添加JUnit库。