錯誤情境:
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.AddResponseInterceptorat 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.