java编译后出现:类名$1.class和 $2.class
起因:更改了某个类,加了两个java 的comparator比较器,通过内部类的方式实现。因为仅改了一个类所以后面发布的时候就采用增量发布,直接替换.class并重启服务器,之后访问与该类相关接口都会报错说找不到xxxx$1.class 和xxxx$2.class。
解决:查看重编译后的文件夹确实有编译出xxxx$1.class 和xxxx$2.class文件,将两个文件也一同发布后重启服务器,恢复正常。
结论:java编译后的文件名字带有$接数字的就是匿名内部类的编译结果。全量发布的时候可以不会发现缺少,但如果做增量发布,又有使用到内部类就需要把相应的xxxx$1.class 和xxxx$2.class一起发布,本次使用了两个内部类所以产生了两个文件。