JAVA Collections.sort方法在SSH三大框架中使用中的問題
最近,一同學在開發中遇到了SSH三大框架中使用到了Collections.sort方法。然而,他開發環境中的JDK
是1.7.0_64,網站部署的JDK版本是1.7.0_80,他通過開發環境中產生的.class直接去更新網站部署環境中的.class
檔案後,程式相關功能模組執行到Collections.sort不繼續執行也不報錯,而前臺ajax因此取不到資料。
類似的遠端如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
String analysisBillByIllName(){
|
如上程式通過AJAX非同步訪問,在開發環境中能正常執行;但是使用低版本的JDK編譯後的.class檔案直接去替換高版本下
的同名.class檔案類,程式執行到:
1 |
|
而下邊的方法不執行也不報錯:
1 2 3 4 5 6 7 8 9 10 11 |
|
程式無法執行Collections.sort,不能執行到函式返回語句,AJAX非同步訪問獲取不到資料,導致前臺報錯獲取資料失敗。
在問題排查過程中,經歷瞭如下過程:
1、開發環境是windows,網站部署環境是centos6.8,前後重新編譯了網站程式碼,並且重新部署了centos上的網站,
問題還是不執行Collections.sort;
2、懷疑是阿里雲環境安全的限制,關閉了主機防火牆,但是Collections.sort方法還是不執行也不報錯;
3、單獨編輯測試Collections.sort的java類分別在windows和centos環境下編譯執行,發現Collections.sort在windows和centos上均可以執行,測試程式如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
|
4、檢視windows和centos環境下的JDK版本,發現兩邊環境JDK版本不一致,windows環境下jdk版本是:1.7.0_64,而
centos環境下JDK版本是1.7.0_80;將windows環境下JDK版本更新到1.7.0_80,並指定開發工具myeclipse的Java編譯使用
JDK1.7.0_80版本,重新編譯網站原始碼,在centos上釋出網站,發現如下程式順利執行:
1 2 3 4 5 6 7 8 9 10 11 |
|
到此問題得到了解決!