ecplise使用jetty启动maven项目java.lang.ClassNotFoundException

错误场景:

ecplise(oxygen)使用jetty启动manven多模块项目,项目编译通过、install也正常但是在启动时出现java.lang.ClassNotFoundException,无法找到依赖的子模块项目,例如

project(maven项目)

-moduleA(jar)

-model

-dao

-moduleB(jar)

.....

-moduleC(web)


在A、B项目模块都colse时,moduleC可以通过jetty正常启动,当A、B项目处于打开的条件下,启动C会出现如下异常

java.lang.ClassNotFoundException: com.*********.support.security.interceptor.AddResponseInterceptor
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:487)
	at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:428)
	at org.springframework.util.ClassUtils.forName(ClassUtils.java:250)

无论重新打包或是clean、install或是maven的update,都无解。


解决办法

在出现异常的情况的可右击项目debug as -> debug configurations 打开后找到

ecplise使用jetty启动maven项目java.lang.ClassNotFoundException_第1张图片

此时你会发现引入模块的所有的classes文件夹都是灰色,此时异常就明了了,说明class文件在jetty启动时都没有找到。原因已找到,解决办法就简单了,选择第一个classes让其变为如下样式,发现所有的classes文件都显示成了黑色

ecplise使用jetty启动maven项目java.lang.ClassNotFoundException_第2张图片

再次启动jetty。OK


DONE.



你可能感兴趣的:(技术经验)