奇葩問題001:Idea無法正常編譯(程式碼沒有問題)【原因已找到】

衣舞晨風發表於2016-12-13

最近遇到了一個奇葩的問題,在專案開發中,一些同事的idea突然就編譯不過去了,點選【RUN】會報出下面的錯誤:

org.springframework.beans.factory.support.DefaultListableBeanFactory
-->Bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'sysTestMapper' defined in URL 
[jar:file:/E:/NewERP1/jiankunking/jiankunking-web/target/jiankunking-web-1.0-SNAPSHOT/WEB-INFb/jiankunking-system-1.0-SNAPSHOT.jar!/org/jiankunking/system/member/sysTestMapper.class]: 
Initialization of bean failed; nested exception is java.lang.StackOverflowError 

點選【debug】執行會提示下面的錯誤:

org.springframework.beans.factory.support.DefaultListableBeanFactory
-->Bean creation exception on FactoryBean type check: org.springframework.beans.factory.UnsatisfiedDependencyException: 
Error creating bean with name 'sysTestMapper' defined in URL 
[jar:file:/E:/NewERP1/jiankunking/jiankunking-web/target/jiankunking-web-1.0-SNAPSHOT/WEB-INFb/jiankunking-system-1.0-SNAPSHOT.jar!/org/jiankunking/system/member/sysTestMapper.class]: 
Unsatisfied dependency expressed through bean property 'sqlSessionFactory': :
Error creating bean with name 'sqlSessionFactory' defined in URL 
[jar:file:/E:/NewERP1/jiankunking/jiankunking-web/target/jiankunking-web-1.0-SNAPSHOT/WEB-INFb/jiankunking-web-1.0-SNAPSHOT.jar!/spring/spring-mybatis.xml]: 
Invocation of init method failed; 
nested exception is java.lang.NoClassDefFoundError:
Could not initialize class org.apache.xpath.compiler.FunctionTable; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in URL 
[jar:file:/E:/NewERP1/jiankunking/jiankunking-web/target/jiankunking-web-1.0-SNAPSHOT/WEB-INFb/jiankunking-web-1.0-SNAPSHOT.jar!/spring/spring-mybatis.xml]:
Invocation of init method failed; 
nested exception is java.lang.NoClassDefFoundError: 
Could not initialize class org.apache.xpath.compiler.FunctionTable 

找過各種各種方式來處理這個問題,最後發現在debug模式下,在:
org.springframework.beans.factory.support.DefaultListableBeanFactory
spring的DefaultListableBeanFactory類中每個throw 異常的地方打上斷點,在debug模式下就可以跑起來了。
無語中。。。。竟然可以這樣解決問題。

過了一段時間,這種方式也不行了,又是會重啟idea問題就消失了。

但問題還是不時的出現,程式碼都是一樣的,而且程式碼打包後,在tomcat裡面是可以正常執行的,而問題只有幾個同事的開發環境中會出現,所以,應該是環境問題,解除安裝Tomcat、JDK,重灌之後問題消失。

—————————————————————————問題再次出現,原因查詢—————————————————————————

今天同事又遇到這個問題了,在cmd視窗下:

java -version

看到的jdk版本是1.8

javac -version

看到的版本是1.7

需要注意編譯jdk版本和執行時的jdk版本,執行時jdk版本不能小於編譯時候的jdk版本。

在idea中用的版本是jdk1.7.0_69
這裡寫圖片描述
從360中可以看到同事的環境中安裝了很多jdk
這裡寫圖片描述

我從360中解除安裝JDK 8還有JDK 1.7.0_69,然後重新設定一下系統環境中的環境變數,在idea中重新選一下jdk即可

—————————————————————————問題解決—————————————————————————

作者:jiankunking 出處:http://blog.csdn.net/jiankunking

相關文章