java編譯後出現:類名$1.class和 $2.class

起因:更改了某個類,加了兩個java 的comparator比較器,通過內部類的方式實現。因為僅改了一個類所以後面發佈的時候就採用增量發佈,直接替換.class並重啟服務器,之後訪問與該類相關接口都會報錯說找不到xxxx$1.class 和xxxx$2.class。

解決:查看重編譯後的文件夾確實有編譯出xxxx$1.class 和xxxx$2.class文件,將兩個文件也一同發佈後重啟服務器,恢復正常。


java編譯後出現:類名$1.class和 $2.class

編譯後生成的class

結論:java編譯後的文件名字帶有$接數字的就是匿名內部類的編譯結果。全量發佈的時候可以不會發現缺少,但如果做增量發佈,又有使用到內部類就需要把相應的xxxx$1.class 和xxxx$2.class一起發佈,本次使用了兩個內部類所以產生了兩個文件。


分享到:


相關文章: