一、问题描述
运行单元测试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)不一致造成的,错误如下图所示
2. 将原来测试节点"src/test"修改为"src/main/test",和“src/main/java、src/main/resources”,同时修改Build Path,如下图所示
3. 再运行main方法,能正常输出,如输出结果所示