eclipse中出现‘ClassNotFoundException’错误
在eclipse运行ClassLoader类时,出现如下错误
java.lang.ClassNotFoundException: Tester
代码如下:
package base1;
class Tester {
static{
System.out.println("Tester类的静态初始化块...");
}
}
public class ClassLoaderTest {
public static void main(String[] args)
throws ClassNotFoundException{
try{
ClassLoader cl = ClassLoader.getSystemClassLoader();
cl.loadClass("Tester");
System.out.println("系统加载Tester类");
Class.forName("Tester");
}catch(Exception e){
e.printStackTrace();
}
}
}
正确代码如下:
package base1;
class Tester {
static{
System.out.println("Tester类的静态初始化块...");
}
}
public class ClassLoaderTest {
public static void main(String[] args)
throws ClassNotFoundException{
try{
ClassLoader cl = ClassLoader.getSystemClassLoader();
cl.loadClass("base1.Tester");
System.out.println("系统加载Tester类");
Class.forName("base1.Tester");
}catch(Exception e){
e.printStackTrace();
}
}
}
需要在loadClass()方法中加入包名,Class的forName()方法中加入包名,才能正确找到class文件地址。
查看Eclipse项目classes文件的默认输出路径。
项目----右键----‘Java Build Path’,classer默认路径如下图
cmd中出现错误: 找不到或无法加载主类 ClassLoaderTest
通常出现这种错误有三种原因:
一:环境变量配置有误;
二:执行方法有误,执行时应先执行javac,生成xxx.class文件,在执行java;
三:程序有问题,比如我之前直接在cmd下执行eclipse下的java文件,始终报“错误: 找不到或无法加载主类”这个异常,但是在eclipse下执行同一个文件却没有问题,后来仔细发现原来是java文件中的包名导致的,删除掉红色框中的内容即可正常运行。这是在编译通过的情况下执行编译后的文件出现的问题,如果编译都没通过那就是java文件的问题,仔细检查一下文件是否有异常,比如类没有被public修饰,或者main方法没有static修饰等等。