我偶然遇到了一个有趣的错误,我需要你帮助我弄明白。
对于下面的代码,每件事都可以:
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
。
所以我的问题是:
TestCase
课程?TestCase
类时,为什么无法找到或加载主类?注意:我知道print helloworld 函数与TestCase class
曾经用于 junit test 没什么关系,但我想找出导致这个惊喜的原因
答案 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库。