内部类,匿名内部类,多个类的总结记录
开头
今天开发遇到个问题,报错信息是NoClassDefFoundError ,找不到类,这个类是个内部类(当时我是这么认为的),也发现服务器上确实没有编译后的内部类class文件。查看本地代码是有内部类的class的,但是这个class不是外部类$内部类.class的形式,也很奇怪。。
各种搜索问题
-
NoClassDefFoundError 是java虚拟机报的错,是运行时异常,无法提前处理。其实就是找不到类。
-
各种内部类,以及他们编译后的文件:
- 内部类
public class Outer{ class inner{ } }
这样编译后的结果是:Outer.class、Oueter$inner.class 两个文件
- 匿名内部类
public class Outer{ public Outer{ new inner(){ @override public void test(){} } } interface inner{ test(); } }
这样编译后的结果是:Outer.class、Oueter$1.class 两个文件
- 多个类(一个java文件)
public class a{ } class b{} class c{}
这样编译后的结果是:a.class、b.class、c.class 三个文件,我其实代码是这样的,我一直以为我写的是内部类。
-
至于为什么服务器上没有编译出我需要的类,还是没搞明白,目前是第三种情况改为第一种情况,等明天部署看看会不会好。