1. 程式人生 > >ecplise使用jetty啟動maven專案java.lang.ClassNotFoundException

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 開啟後找到


此時你會發現引入模組的所有的classes資料夾都是灰色,此時異常就明瞭了,說明class檔案在jetty啟動時都沒有找到。原因已找到,解決辦法就簡單了,選擇第一個classes讓其變為如下樣式,發現所有的classes檔案都顯示成了黑色


再次啟動jetty。OK

DONE.