1. 程式人生 > 實用技巧 >jfinal執行時報錯分析java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener

jfinal執行時報錯分析java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener

這裡解釋一下,我用maven jetty執行沒啥問題的專案,當我切換tomcat時候出現如下錯誤。

問題1.- jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class

問題2. java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener

這裡大家如果直查詢問題2,相信大家大多看到的解決方式是:檢查輸出環境,右擊專案–>Build Path–>Source,如下

這種方式解決問題是沒錯,當然你還得檢查一下Deployment Assembly,檢查maven lib包存在等,結果發現自己配的沒問題,但是原因不在這裡,那麼再回歸到問題1的報錯搜尋;

出現這個原因,是因為javaee-web-api版本問題,在pom.xml 去看到,版本是6,當我們把專案和Tomcat的jdk配置成1.6,

網上查到可能是tomcat自身的包衝突了 ,於是我把javax 這個引用註釋之後,發現不報這個錯誤,而出現新的

Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 2, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 11q2w15aa1refzrau0gn85|629274e1, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass

那麼排除包衝突的錯誤了,所以繼續這個引入這個包,檢查版本一切都是jdk 1.6沒毛病時候,發現原來多了一行報錯。webSocket需要1.7及以上的版本

這下問題明朗了,那就把6版本升級為7.0,又把專案和tomcat的jdk換成了1.8

一切OK ,順利啟動。

原因總結,此專案版本需要jdk 1.6以上版本,但是pom.xml卻配置成了1.6的版本的,所以會導致這個問題。

本文屬作者原創,如有轉載,請表明出處:https://www.cnblogs.com/mobeisanghai/p/13186975.html