首页

报NoClassDefFoundError异常,弹出"Could not find the main class..Programe will exit"窗口提示

标签:找不到类,类加载初始化,NoClassDefFoundError,单元测试,Classpath,异常     发布时间:2016-07-29   

一、问题描述

运行单元测试Test类的main方法失败,直接弹出错误窗口提示”Could not find the main class:search Test. Program will exit.“,后台日志抛出"java.lang.NoClassDefFoundError: search/Test",如下所示

java.lang.NoClassDefFoundError: search/Test@b@Caused by: java.lang.ClassNotFoundException: search.Test@b@    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)@b@    at java.security.AccessController.doPrivileged(Native Method)@b@    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)@b@    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)@b@    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)@b@    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

二、解决步骤

1. 这个是因为测试节点路径src/test映射的classpath是taget/test-classes,和默认classpath层级(src/main/java..src/main/resources)不一致造成的,错误如下图所示

报NoClassDefFoundError异常,弹出"Could not find the main class..Programe will exit"窗口提示

2. 将原来测试节点"src/test"修改为"src/main/test",和“src/main/java、src/main/resources”,同时修改Build Path,如下图所示

报NoClassDefFoundError异常,弹出"Could not find the main class..Programe will exit"窗口提示

3. 再运行main方法,能正常输出,如输出结果所示