ClassLoader.loadClass()方法执行时提示‘ClassNotFoundException’

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默认路径如下图

ClassLoader.loadClass()方法执行时提示‘ClassNotFoundException’_第1张图片

cmd中出现错误: 找不到或无法加载主类 ClassLoaderTest

通常出现这种错误有三种原因:

一:环境变量配置有误;

二:执行方法有误,执行时应先执行javac,生成xxx.class文件,在执行java;

三:程序有问题,比如我之前直接在cmd下执行eclipse下的java文件,始终报“错误: 找不到或无法加载主类”这个异常,但是在eclipse下执行同一个文件却没有问题,后来仔细发现原来是java文件中的包名导致的,删除掉红色框中的内容即可正常运行。这是在编译通过的情况下执行编译后的文件出现的问题,如果编译都没通过那就是java文件的问题,仔细检查一下文件是否有异常,比如类没有被public修饰,或者main方法没有static修饰等等。

ClassLoader.loadClass()方法执行时提示‘ClassNotFoundException’_第2张图片

你可能感兴趣的:(java)