错误场景:
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 打开后找到
此时你会发现引入模块的所有的classes文件夹都是灰色,此时异常就明了了,说明class文件在jetty启动时都没有找到。原因已找到,解决办法就简单了,选择第一个classes让其变为如下样式,发现所有的classes文件都显示成了黑色
再次启动jetty。OK
DONE.
本文解决了一个在Eclipse Oxygen环境下使用Jetty启动Maven多模块项目时遇到的ClassNotFoundException问题。当某些模块处于打开状态时,主模块无法找到依赖的子模块类。通过调整Jetty的配置,确保所有必要的类文件被正确加载。

6705

被折叠的 条评论
为什么被折叠?



