起因:更改了某個類,加了兩個java 的comparator比較器,通過內部類的方式實現。因為僅改了一個類所以後面發佈的時候就採用增量發佈,直接替換.class並重啟服務器,之後訪問與該類相關接口都會報錯說找不到xxxx$1.class 和xxxx$2.class。
解決:查看重編譯後的文件夾確實有編譯出xxxx$1.class 和xxxx$2.class文件,將兩個文件也一同發佈後重啟服務器,恢復正常。
結論:java編譯後的文件名字帶有$接數字的就是匿名內部類的編譯結果。全量發佈的時候可以不會發現缺少,但如果做增量發佈,又有使用到內部類就需要把相應的xxxx$1.class 和xxxx$2.class一起發佈,本次使用了兩個內部類所以產生了兩個文件。
閱讀更多 某內出身程序員 的文章