轉自:http://blog.csdn.net/rchm8519/article/details/41624381
1. HttpClient I/O exception:
錯誤信息:I/O exceptioncaught when processing request: Connection timed out:connect
錯誤原因:IP不正確。
解決方法:改正IP
2. Ambiguous handler methods mapped
錯誤信息:java.lang.IllegalStateException: Ambiguoushandler methods mapped for HTTP path '/lowpressure.json'
Ambiguous:模糊不清的,有歧義的
錯誤原因:項目中存在兩個相同的RequestMapping路徑
解決方法:修改其中一個名稱
3. session read-only
錯誤信息:org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode(FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO orremove 'readOnly' marker from transaction definition.
錯誤原因:開啟了openSessionInViewFilter,而這種session的默認模式是只讀。
解決方法:為其設置初始化參數singleSession=false。
<init-param>
<param-name>singleSession</param-name>
<param-value>false</param-value>
</init-param>
4. org/hibernate/exception/DataException
錯誤信息:
javax.servlet.ServletException:java.lang.NoClassDefFoundError:org/hibernate/exception/DataException
Caused by: java.lang.NoClassDefFoundError:org/hibernate/exception/DataException
錯誤原因:不明。好像是因為開啟了openSessionInViewFilter(你可能不信,但確實是這樣!)
解決方法:關閉openSessionInViewFilter
5. Initializing connection provider:
異常信息:Initializing connection provider:
org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
Tomcat啟動時長時間停留在此處
原因:不明!
解決方法:自愈!
6. www.highcharts.com/errors/13
錯誤信息:
uncaught exception: Highcharts error #13: www.highcharts.com/errors/13
highcharts畫趨勢圖時firebug捕捉到異常!
錯誤原因:highchairs官網給出原因
Rendering div not found
This error occurs if the chart.renderTo option ismisconfugured so that Highcharts is unable to find the HTML element to renderthe chart in.
解決方法:配置chart.renderTo為一個存在的div的id。
7. C3p0獲取連接失敗
錯誤信息:java.sql.SQLException: An attempt by a clientto checkout a Connection has timed out
錯誤原因:客戶端從連接池中獲取連接超時,通常是因為連接池中連接達到最大數量,且都被取走還未歸還,出項這一現象的原因有兩種:一是連接最大數配置過小不夠並發使用,二是程序中存在連接泄露,有使用后未歸還處。
解決方法:排查有無連接未close,若沒有則增加最大連接數量!
8. org.hibernate.NonUniqueObjectException
錯誤信息:a differentobject with the same identifier value was already associated with the session:
錯誤原因:這個錯誤產生原因是因為在hibernate中同一個session里面有了兩個相同標識但是不同實體的對象.比如通過hibernate從數據庫中查出一個對象A,有手動new了一個新的對象B,並且付給B與A相同的標識符,再通過hibernate保存B,這樣就在session里同時存在A和B這兩個相同標識符但不同的對象。
解決方法:方法1,保存B之前,調用一下session.clear(),清空一下當前session,但此方法不適合在一次需要保存多個對象時,不推薦使用!
方法2,在保存B之前,清除一下session中A對象,只清除A對象,調用session.evict(A)即可;
方法3,通過調用session.merge(B),這樣會用B去更新庫中的A,但不會把B持久化,session中就不會同時存在A和B
方法4,把B對象的屬性值都set到A中,然后還保存A即可。
幾種方法根據業務需要選擇使用,如無特殊需要,推薦采用第三種方法。
9. doesnot contain handler parameter named 'method'
錯誤信息:Request[/patientSelfAction] does not contain handlerparameter named 'method'. This may becaused by whitespace in the label text.
10. Socket異常1:Address already in use: JVM_Bind
該異常發生在服務器端進行new ServerSocket(port)(port是一個0,65536的整型值)操作時。異常的原因是以為與port一樣的一個端口已經被啟動,並進行監聽。此時用netstat –an命令,可以看到一個Listending狀態的端口。只需要找一個沒有被占用的端口就能解決這個問題。
11. Socket異常2: Connection refused: connect
該異常發生在客戶端進行new Socket(ip, port)操作時,該異常發生的原因是或者具有ip地址的機器不能找到(也就是說從當前機器不存在到指定ip路由),或者是該ip存在,但找不到指定的端口進行監聽。出現該問題,首先檢查客戶端的ip和port是否寫錯了,如果正確則從客戶端ping一下服務器看是否能ping通,如果能ping通(服務服務器端把ping禁掉則需要另外的辦法),則看在服務器端的監聽指定端口的程序是否啟動,這個肯定能解決這個問題。
12. Socket異常3: Socket is closed
該異常在客戶端和服務器均可能發生。異常的原因是己方主動關閉了連接后(調用了Socket的close方法)再對網絡連接進行讀寫操作。
13. Socket異常4: Connection reset
該異常在客戶端和服務器端均有可能發生,引起該異常的原因有兩個,第一個就是如果一端的Socket被關閉(或主動關閉或者因為異常退出而引起的關閉),另一端仍發送數據,發送的第一個數據包引發該異常(Connect reset by peer)。另一個是一端退出,但退出時並未關閉該連接,另一端如果在從連接中讀數據則拋出該異常(Connection reset)。簡單的說就是在連接斷開后的讀和寫操作引起的。
14. Socket異常5: Broken pipe
該異常在客戶端和服務器均有可能發生。在第4個異常的第一種情況中(也就是拋出SocketExcepton:Connect reset by peer:Socket write error后),如果再繼續寫數據則拋出該異常。前兩個異常的解決方法是首先確保程序退出前關閉所有的網絡連接,其次是要檢測對方的關閉連接操作,發現對方關閉連接后自己也要關閉該連接。
15. 視圖轉儲為sql后無法導入
使用navicat工具導出數據庫為sql文件后,其中視圖的sql語句中有以下內容:
DROP VIEW IF EXISTS `bloodpressure`;
CREATE ALGORITHM=UNDEFINEDDEFINER=`root`@`` SQL SECURITY DEFINER VIEW `bloodpressure` AS....
其中DEFINER的值中@后面應該是數據庫所在主機的IP地址,通過可視化工具建立連接后執行sql語句的話,可以直接使用localhost或者127.0.0.1即可,即DEFINER=`root`@`localhost`
16. 完全卸載MySQL
由於各種原因需要重裝MysSQL,通常會遇到原來的配置信息卸載不干凈而引起重裝失敗的現象。那么如何才能確保MySQL卸載干凈呢?如果你是通過控制面板的“添加和刪除程序”來卸載MySQL的話,那么你還需要進行以下兩步操作:
1、刪除原數據信息,即刪除C:\Documents and Settings\All Users\Application Data路徑下的MySQL文件夾,有時改文件夾可能被隱藏,通過選擇“工具”下的“文件夾選項”,點擊“查看”,選擇“隱藏文件和文件夾”下的“顯示所有文件和文件夾”,就可以顯示出來了。
2、刪除注冊表信息,運行regedit命令,以此展開,刪除里面的MySQL文件夾,有幾個地方:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL
17. java.lang.OutOfMemoryError:Java heap space
引起java.lang.OutOfMemoryError: Java heap space異常,可能是由JAVA的堆棧設置太小的原因
在JVM中如果98%的時間是用於GC且可用的 Heap size 不足2%的時候將拋出此異常信息。
JVM堆的設置是指java程序運行過程中JVM可以調配使用的內存空間的設置.JVM在啟動的時候會自動設置Heap size的值,其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。
根據網上的答案大致有以下三種解決方法:
1、在D:/apache-tomcat-6.0.18/bin/catalina.bat最前面加入:set JAVA_OPTS=-Xms200m-Xmx512m
注意:只有startup.bat啟動tomcat,設置才能生效,如果利用windows的系統服務啟動tomcat服務,上面的設置就不生效了,
就是說set JAVA_OPTS=-Xms200m -Xmx512m沒起作用
2、在Eclilpse中修改啟動參數,在VM arguments 加入了-Xms200m -Xmx512m,設置如下圖所示
3、 可以在windows 更改系統環境變量,加上JAVA_OPTS=-Xms64m-Xmx512m
18. webService 異常:The endpoint reference (EPR) for the Operation not found is :
The endpoint reference (EPR) for the Operation not found is/EMRServer/services/BloodpressureService/getBloodpressure
錯誤原因:找不到資源。可能是service名稱不存在,或者方法名稱錯誤等原因
19. org.apache.axis2.deployment.DeploymentException
最近在做axis2,開始運行正常,今天加入spring AOP 后,出現下面的異常
org.apache.axis2.deployment.DeploymentException:The following error occurred during schema generation:
Unable to load bytecode for classcom.cmcc.emr.common.Controller.BloodpressureController
網上找資料看了之后,發現是由於axis2 不能參與事務管理,而我的寫的service又剛好符合pointcut,所以報錯了,后來把pointcut改寫了一下,就不會報錯了,
結論:service服務不能配置為切入點。
20. Sql語句優化(嵌套子查詢)
Sql in 語句 效率奇低(ExecutionTime : 24 s)
SELECT phone FROM runmessage WHERE encounterDatetime IN (SELECT MAX(encounterDatetime) FROM runmessageWHERE DATE(encounterDatetime)='2013-07-19' GROUPBY email) ORDER BY steps DESC LIMIT 0,10;
優化后:效果顯著(Execution Time : 3 s)
SELECT * FROM (SELECT MAX(encounterDatetime) ASencounterDatetime,phone,steps,email FROM runmessage WHEREDATE(encounterDatetime)='2013-07-19' GROUPBY email) AS tempMessage ORDER BY tempMessage.steps DESC LIMIT 0,10;
21. registered the JDBC driver butfailed to unregister it
Tomcat關閉時報出警告:
嚴重: The webapplication [/EMRServer] registered the JDBC driver [com.mysql.jdbc.Driver] butfailed to unregister it when the web application was stopped. To prevent amemory leak, the JDBC Driver has been forcibly unregistered.
原因未知。
22. Caused by:java.lang.NoClassDefFoundError: org/hibernate/exception/DataException
錯誤原因:hibernate通過Hql語句進行數據庫操作時,hql語句中的字段拼寫錯誤,導致無法識別,報出此異常。比如,如果from后面寫的是實體類名,后面的字段就必須是類的屬性,而不能是表字段的名稱。切記!!!
23. IllegalStateException: Couldnot find @PathVariable [startTime] in @RequestMapping
異常信息:org.springframework.web.util.NestedServletException:
Request processing failed; nested exceptionisorg.springframework.web.bind.annotation.support.HandlerMethodInvocationException:Failed to invoke handler method [publicorg.springframework.web.servlet.ModelAndViewcom.cmcc.emr.restful.Controller.BloodSugarController.findBloodsugar(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)throws java.lang.Exception]; nested exception isjava.lang.IllegalStateException: Could not find@PathVariable[startTime] in @RequestMapping
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
com.cmcc.emr.Util.LoginFilter.doFilter(LoginFilter.java:27)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
錯誤原因:
最近在使用restful規范實現webService,發現這個非常奇怪的異常!明明存在@PathVariable[startTime]這個參數,但卻一直報:Couldnot find!
兩個接口如下:
Post接口:
@RequestMapping(method=RequestMethod.POST, value="/bloodSugars/{idcard}/{encounterDatetime}/{beforemeal}/{aftermeal}/{appType}")
public void insertBloodSugar(@PathVariable String idcard,@PathVariable StringencounterDatetime,
@PathVariable String beforemeal,@PathVariable String aftermeal,@PathVariable StringappType,
HttpServletRequestrequest,HttpServletResponse response) throws Exception{
…
}
Get接口:
@RequestMapping(method=RequestMethod.GET, value="/bloodSugars/{idcard}/{startTime}/{endTime}/{startNum}/{offset}")
public ModelAndView findBloodsugar(@PathVariable String idcard,@PathVariableStringstartTime,@PathVariable String endTime,
@PathVariable StringstartNum,@PathVariable String offset) throws Exception{
…
}
Post接口調用正常,但是調用Get接口時,就一直報上面的這個異常,百思不得其解!!
后來各種觀察,各種測試,發現當兩個方法參數個數不同時,都可以正常運行,因此懷疑是restful 沒能把post 和 get 方法區分清除,導致查找失敗,后又做了幾個測試,證明確實如此,不僅是get和post,put方法也是一樣,只要參數個數相同,都會去匹配post注解下的方法,如果兩個方法參數名稱不同,結果就會出現Could not find @PathVariable,不明白問什么會出現這種現象,注解@RequestMapping的保留策略也是runtime的!待查。。。
24. Tomcat7與ActiveMQAjaxServlet不兼容問題
Tomcat6上使用ActiveMQ AjaxServlet時,完全沒有問題
但是,Tomcat7使用ActiveMQ AjaxServlet時,發生Not supported. exception
網上搜索了很多方案,都說只要對AjaxServlet加上async-supported支持就可以了。
但是,實際結果還是報同樣的異常。
經過長時間的嘗試,終於找到問題的原因了。
原來消息請求在AjaxServlet處理前,會先被filter先處理,所以filter也要加上async-supported支持。
具體配置代碼如下:
web.xml
<!-- ActiveMQ servlet --><servlet><servlet-name>AjaxServlet</servlet-name><servlet-class>org.apache.activemq.web.AjaxServlet</servlet-class><load-on-startup>1</load-on-startup><async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>AjaxServlet</servlet-name><url-pattern>/amq/*</url-pattern></servlet-mapping><!-- 著名 Character Encoding filter --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><!-- 強制進行轉碼 --><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- ActiveMQ --><filter><filter-name>session</filter-name><filter-class>org.eclipse.jetty.continuation.ContinuationFilter</filter-class><async-supported>true</async-supported></filter><filter-mapping><filter-name>session</filter-name><url-pattern>/*</url-pattern></filter-mapping>
25. unknown protocol: c
項目部署在tomcat下,啟動的時候報錯: java.net.MalformedURLException: unknown protocol: c at java.net.URL.<init>(URL.java:574) at java.net.URL.<init>(URL.java:464) at java.net.URL.<init>(URL.java:413) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:650) at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)...
這個錯一般有兩種原因導致: 1、URL協議、格式或者路徑錯誤,好好檢查下你程序中的代碼 如果是路徑問題,最好不要包含中文路徑,因為有時中文路徑會亂碼,導致無法識別 Tomcat 不要安裝在有中文或空格的路徑下。 2、jar問題:用jdom解析xml文件,如果應用路徑里有gnujaxp.jar包的話,jdom就會 調用它去解析xml文件,導致上述異常的出現。 如果是這個問題,解決方法:在應用路徑里去掉對gnujaxp.jar包的引用。
26. Unsupported major.minor version51.0
問題產生的原因:用jdk7編譯的class文件放到基於jdk6運行在tomcat之中,就會報這個錯。
解決起來也很方便:打開eclipse中項目上的屬性—java compiler–選擇一個合適的版本后重新編譯即可。
具體步驟
解決:項目------>右鍵------>屬性------>Java Compiler------>Compiler Compliance Level------>選擇你使用的JDK版本------>應用。
總結:不同的JDK版本使用的major.minor不同,所以會導致這個錯誤。在項目中要使用當前電腦配置的JDK版本,切忌張冠李戴。
知識擴充:major.minor version,它相當於一個軟件的主次版本號,只是在這里是標識的一個Java Class的主版本號和次版本號。
JDK1.7 51.0
JDK1.6 50.0
JDK1.5 49.0
JDK1.4 48.0
總之問題的根由是低版本的 JVM 無法加載高版本的 class 文件造成的,找到高版本的 class 文件處理一下就行了。
27. Can not issue data manipulationstatements with executeQuery()
Can not issue data manipulation statementswith executeQuery().
atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
atcom.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:413)
atcom.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1336)
atcom.mchange.v2.c3p0.impl.NewProxyStatement.executeQuery(NewProxyStatement.java:35)
atcom.cmcc.util.C3p0Utils.executeQuery(C3p0Utils.java:147)
錯誤原因:
使用executeQuery()方法執行了update,insert,delete等語句
28. Hibernate中常見的異常
本文總結Hibernate中常見的異常。
1. net.sf.hibernate.MappingException
當出現net.sf.hibernate.MappingException: Errorreading resource:…異常時一般是因為映射文件出現錯誤。
當出現net.sf.hibernate.MappingException:Resource: … not found是因為XML配置文件沒找到所致,有可能是放置目錄不正確,或者沒將其加入hibernate.cfg.xml中。
2. net.sf.hibernate.PropertyNotFoundException
當出現net.sf.hibernate.PropertyNotFoundException:Could not find a setter for property name in class …時,原因一般是因為XML映射文件中的屬性與對應的Java類中的屬性的getter或setter方法不一致。
3. org.hibernate.id.IdentifierGenerationException
當出現org.hibernate.id.IdentifierGenerationException:ids for this class must be manually assigned before calling save():異常時,一般是因為<id>元素配置不正確,<id>元素缺少其子元素<generator></generator>的配置引起。
解決方案:<id>元素映射了相應數據庫表的主鍵字段,對其子元素<generatorclass="">,其中class的取值可以為increment、identity、sequence、hilo、native……等,更多的可參考hibernate參考文檔,一般取其值為native 。具體可參考2.2.2.1小節。
4. a different object with the same identifier value was alreadyassociated with the session
當出現a different object with the same identifiervalue was already associated with the session時,一般是因為在hibernate中同一個session里面有了兩個相同標識但是是不同實體。
有如下幾種解決方案:
(1)使用session.clean(),如果在clean操作后面又進行了saveOrUpdate(object)等改變數據狀態的操作,有可能會報出"Found two representationsof same collection"異常。
(2)使用session.refresh(object),當object不是數據庫中已有數據的對象的時候,不能使用session.refresh(object)因為該方法是從hibernate的session中去重新取object,如果session中沒有這個對象,則會報錯所以當你使用saveOrUpdate(object)之前還需要判斷一下。
(3)session.merge(object),Hibernate里面自帶的方法,推薦使用。
5. SQL Grammer Exception,Could not execute JDBC batch update
當出現SQL Grammer Exception,Could not executeJDBC batch update異常時,一般是由如下問題引起:
(1)SQL語句中存在語法錯誤或是傳入的數據有誤;
(2)數據庫的配置不合法,或者說是配置有誤。較容易出現的有數據表的映射文件(,hbm.xml文件)配置有誤;Hibernate.cfg.xml文件配置有誤;
(3) 當前的數據庫用戶權限不足,不能操作數據庫。以是以Oracle 數據庫為例,這種情況下在錯誤提示中會顯示java.sql.BatchUpdateException: ORA-01031: insufficient privileges這樣的信息。
針對上面的各種原因,開發人員可以找出對應的解決方案。
29. teamviewer現在無法捕捉屏幕,這可能是由於快速的用戶切換或遠程桌面會話已經斷開
這個問題蠻簡單,如果你用“遠程桌面”連過去開啟teamview的話,當你退出“遠程桌面”后,外網用teamview連接就會出現這個問題, 解決方法: 不用遠程連接過去開啟teamview,直接在在電腦本機上手動開啟teamview就可以了
已驗證!
30. does not contain handler parameter named 'method'. This may be caused by whitespace in the label text.
Struts1中 action這樣配置的話:
<action path="/login" name="loginForm"parameter="method"
type="org.springframework.web.struts.DelegatingActionProxy" >
頁面訪問時:正確方式是:/login.do?method=xxx ,如果以 /login.do 訪問就會報此異常
31. java.lang.OutOfMemoryError:PermGen space PermGen space
一、 java.lang.OutOfMemoryError:PermGen space PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域, 這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中, 它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對 PermGen space進行清理,所以如果你的應用中有很多CLASS的話,就很可能出現PermGen space錯誤, 這種錯誤常見在web服務器對JSP進行pre compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小超過了jvm默認的大小(4M)那么就會產生此錯誤信息了。
解決方法: 手動設置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -XX:PermSize=64M-XX:MaxPermSize=128m
二、 Windows
在catalina.bat最前面加入
set JAVA_OPTS=-Xms128m -Xmx350m
如果用startup.bat啟動tomcat,OK設置生效.夠成功的分配200M內存.
但是如果不是執行startup.bat啟動tomcat而是利用windows的系統服務啟動tomcat服務,上面的設置就不生效了,
就是說setJAVA_OPTS=-Xms128m -Xmx350m 沒起作用.上面分配200M內存就OOM了..
windows服務執行的是bin\tomcat.exe.他讀取注冊表中的值,而不是catalina.bat的設置.
解決辦法:
修改注冊表HKEY_LOCAL_MACHINE\SOFTWARE\ApacheSoftware Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
原值為
-Dcatalina.home="C:\ApacheGroup\Tomcat5.0"
-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat5.0\common\endorsed"
-Xrs
加入 -Xms300m-Xmx350m
重起tomcat服務,設置生效
32. MySQL server version for theright syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT'
You have an error in your SQL syntax; check the manual thatcorresponds to your MySQL server version for the right syntax to use near'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1
原因:
項目中我用的jdbc驅動版本
mysql-connector-java-5.1.15.jar
mysql數據庫版本為5.6
jdbc在連接數據庫時候會發送測試語句SETOPTION SQL_SELECT_LIMIT=DEFAULT
這在mysql5.6以下版本是可以的,但是5.6不再支持SET...
由於5.6這個變化,導致一些舊的軟件可能運行出錯。mysql官方也不承認這是bug,只能升級你的Mysql驅動來解決。
目前所知:mysql-connector-java-5.1.15.jar及以前版本不可以,
mysql-connector-java-5.1.25.jar及之后版本可以
解決方法:
升級驅動版本,我改成了mysql-connector-java-5.1.25.jar
33. Error creating bean with name'patientService': Injection of autowired dependencies failed;
Caused by:org.springframework.beans.factory.BeanCreationException: Could not autowirefield: public com. flex.dao.JdbcDaocom.cmcc.flex.service.PatientService.jdbcDao; nested exception isorg.springframework.beans.factory.NoSuchBeanDefinitionException: No matchingbean of type [com.flex.dao.JdbcDao] found for dependency: expected at least 1bean which qualifies as autowire candidate for this dependency. Dependencyannotations:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
不能創建bean,因為自動注入失敗。出現此異常的原因是:注解掃描配置順序錯誤,或者配置沖突,請檢查各個引入的xml文件中是否有重復配置。參考配置如下:
<context:component-scan base-package="com.test"/>
<!-- enable autowire -->
<context:annotation-config />
<!-- enable transaction demarcation with annotations -->
<tx:annotation-driven />
34. java.io.IOException: Cannot runprogram "C:\analyze": CreateProcess error=5
java程序通過Runtime.getRuntime().exec()方法調用C程序可執行文件,報此異常。
最后的解決方法是:把jdk的版本從7換成了6,一切就正常了,哎!!
35. 打成jar包后,注解無法掃描的問題
解決方法:export jar的時候,勾選add directory entries
36. ava.io.EOFException錯誤
Tomcat啟動后報:IOException while loading persistedsessions: java.io.EOFException錯誤
出現原因:tomcat對保存硬盤的session讀取失敗
解決方法:打開TOMCAT的安裝目錄,在WORK文件夾找到Catalina\localhost\你的工程名所在文件夾下, 把里面的session.ser刪除即可,或者直接清空localhost