ecplise使用jetty啟動maven專案java.lang.ClassNotFoundException
阿新 • • 發佈:2019-01-25
錯誤場景:
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.