一、問題描述
跳槽到的新公司,相比原來的公司,軟件開發非常不規范,經常各種坑。項目部署到生產現場之后,出現問題,我在修改之后編譯生成class文件,然后將class文件發給現場的技術支持,技術支持將class文件直接替換到生產環境,然后重啟服務,這樣的操作需要非常小心,因為客戶隨時都在用着系統。最近現場又發現了一個問題,我修改代碼之后將calss文件發給現場,現場部署之后發現報錯,顯示類找不到。我修改后的文件中使用到了匿名內部類,正是這個內部類就沒有被找到。下面是正常代碼:
我將對應的class文件復制到桌面,重新用idea打開,顯示如下:
從圖中可以看出明顯是找不到1這個類,突然想到這應該是因為編譯出的class應該不止一個文件,於是在idea對應的class文件右鍵show in Explorer:
果然發現編譯產生了兩個class文件,報錯的原因是因為我替換的時候只替換了一個calss文件,所以報找不到類的錯誤。
二、解決方法
將編譯生成的兩個class文件同事替換,問題解決。匿名內部類再編譯的時候會產生兩個class文件,替換的時候一定要注意。