java.lang.NoClassDefFoundError:$1异常,关于开发是的类加载问题

开发时一次宝贵的错误经历

开发环境 tomcat6.0 jdk 1.6 软件 Myeclipse10

调试接口时出现的问题:同事给的jar包使用时报错,java.lang.NoClassDefFoundError:onegis$1,显而易见是一个类加载器加载问题,之前自己写的获取包下所有的类文件也会出现一个内部类,一定是加载所有的类之后用类加载器加载报的错(之前加载springMVC注解的时候也有过,也许是jdk版本等开发环境,所以后来就变成加载指定包下的注解了)

这个问题是因为不同开发环境获取包下所有的类,有的版本api会将内部类(匿名等等)一并获取,这时候没有报错,但是用类加载器加载之后,就会抛出java.lang.NoClassDefFoundError:onegis$1

同事的解决方案 : 干掉所有内部类

但是就在同事干完内部类的时候还是抛出java.lang.NoClassDefFoundError:onegis$1,反编译jar包并没有问题,没有出现class 1{ }的字样,找了好久最后手动替换tomcat里项目的jar包,程序跑通了。

出现问题的原因 : 1.api加载类要在不同开发环境(各种jdk)下测试
2类加载器写的时候一定要慎重 3 自己的问题,别人已经处理好了问题,剩下的还报之前的错误,那就要想通报错的东西在哪里用到了,比如jar包是在tomcat中用的,所以要去tomcat中去看一看

你可能感兴趣的:(java)