jdk版本問題導致的error: reference to query is ambiguous

1 用的是開源項目Davinci,在其之上進行改造
情況是這樣的,在test的jenkins環境中是可以正常構建的當前項目的,但是準備上預發佈的時候發現jenkins報錯如下:
 
 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project davinci-server_3.01: Compilation failure: Compilation failure:
[ERROR] /home/data_jenkins/workspace/bi-davinci/server/src/main/java/edp/core/utils/SqlUtils.java:[251,14] error: reference to query is ambiguous
[ERROR] both method <T>query(String,ResultSetExtractor<T>) in JdbcTemplate and method query(String,RowCallbackHandler) in JdbcTemplate match
[ERROR] where T is a type-variable:
[ERROR] T extends Object declared in method <T>query(String,ResultSetExtractor<T>)
[ERROR] /home/data_jenkins/workspace/bi-davinci/server/src/main/java/edp/davinci/service/excel/SheetWorker.java:[76,20] error: reference to query is ambiguous
[ERROR] both method <T>query(String,ResultSetExtractor<T>) in JdbcTemplate and method query(String,RowCallbackHandler) in JdbcTemplate match
[ERROR] where T is a type-variable:
[ERROR] T extends Object declared in method <T>query(String,ResultSetExtractor<T>)
[ERROR] /home/data_jenkins/workspace/bi-davinci/server/src/main/java/edp/davinci/service/excel/SheetWorker.java:[76,26] error: incompatible types: cannot infer type-variable(s) T
[ERROR] (actual and formal argument lists differ in length)
[ERROR] where T is a type-variable:
[ERROR] T extends Object declared in method <T>getObject(int,Class<T>)
[ERROR] /home/data_jenkins/workspace/bi-davinci/server/src/main/java/edp/davinci/service/excel/SheetWorker.java:[145,16] error: reference to query is ambiguous
[ERROR] both method <T>query(String,ResultSetExtractor<T>) in JdbcTemplate and method query(String,RowCallbackHandler) in JdbcTemplate match
[ERROR] where T is a type-variable:
[ERROR] T extends Object declared in method <T>query(String,ResultSetExtractor<T>)
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project davinci-server_3.01: Compilation failure
 
2 問題排查過程
1 首先上去jenkins服務器上用如下命令看版本:
# mvn -version  // 可以看到版本爲:jdk 1.8.0_11、maven 3.6.1
看樣子似乎沒啥毛病,jdk也是1.8。先排除這個問題
 
 
 
2 然後我去項目的pom.xml查看如下,原本以爲可能是maven-compiler-plugin版本問題:
 
 
並將version的3.6.1分別改3.2、3.5.3、3.8.0之後,構建依舊報原來的錯誤,所以可以排除這個可能性
 
然後猜測是maven本地倉庫下載損壞的問題,所以用mvn -version找到對應maven目錄然後找到倉庫位置爲如下:
# cd ~
# cd .m2/repository
# rm -rf ./*     // 清空所有
然後重新構建jenkins,然後依舊報原來的錯誤,所以可以排除這個可能性。
 
然後猜測是jdk版本問題嗎?但是都是jdk1.8看樣子真沒毛病。但是還是去檢查jdk版本的問題了,首先去test環境的jenkins找到對應的jdk版本爲jdk .8.0_211,貌似有點不一樣,然後就把測試環境的jdk拷到預發佈的jenkins中,並修改JAVA_HOME爲jdk .8.0_211路徑,最後重新構建發現依舊報原來的錯誤,本來是排除了這個可能性的。但是跟同事商量後,在mvn的命令中加上-X 把debug信息打印出來,其關鍵問題信息如下:
 
 
上面發現jdk版本居然還是1.8.0_11????坑爹啊,然後就去找jenkins怎麼設置jdk版本(設置連接爲: https://jingyan.baidu.com/article/aa6a2c140a6c564c4d19c468.html)。配了jdk 1.8.0_211之後構建居然可以了!!
 
總結:就是jdk版本bug的鍋。。。。。下面附上一張圖:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章