java编译后出现:类名$1.class和 $2.class

createh56个月前 (12-22)技术教程58

起因:更改了某个类,加了两个java 的comparator比较器,通过内部类的方式实现。因为仅改了一个类所以后面发布的时候就采用增量发布,直接替换.class并重启服务器,之后访问与该类相关接口都会报错说找不到xxxx$1.class 和xxxx$2.class。

解决:查看重编译后的文件夹确实有编译出xxxx$1.class 和xxxx$2.class文件,将两个文件也一同发布后重启服务器,恢复正常。


结论:java编译后的文件名字带有$接数字的就是匿名内部类的编译结果。全量发布的时候可以不会发现缺少,但如果做增量发布,又有使用到内部类就需要把相应的xxxx$1.class 和xxxx$2.class一起发布,本次使用了两个内部类所以产生了两个文件。

相关文章

阿里巴巴Java性能调优实战:深入JVM即时编译器JIT,优化Java编译

深入JVM即时编译器JIT,优化Java编译然而许多 Java 开发人员对 JIT 编译器的了解并不多,不深挖其工作原理,也不深究如何检 测应用程序的即时编译情况,线上发生问题后很难做到从容应对。类编...

如何避免springboot jar包源码泄露以及反编译

近期笔者在为客户做私有云的部署。而这个客户有个特点,喜欢破解。为了防止源码泄漏,决定对jar包进行加密。XjarXjar基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动...