使用Axis出现java.lang.NoClassDefFoundError的原因
2010-05-26 16:33
429 查看
使用Axis发布了一个Web Service服务,但是在查看所有服务列表的时候,出现了如下图所示的错误:
猛一看很恐怖,但仔细看一下,发现是因为axis在加载提供服务的类时没有找到该类。但是该类部署并没有错误,wsdd的配置也确信没有错,怎么会找不到该类呢?后来发现这个问题是由于该类有一个static块用于初始化,而在这个初始化快中有一个类变量没有初始化而直接使用引起的。但是为什么不报NullPointerException错误呢?而是直接蹦这么一堆恐怖而又莫名其妙的错误?
后来分析了一下,我认为(纯个人观点),原因可能是这样的:
在通过浏览器查看该服务的所有服务列表时,axis会通过Class.forname方法加载每一个提供服务的类,如果加载的类有static块,则加载的时候会执行这个static块。但是如果在执行这个块的时候发生了错误(例如上面提到的NullPointerException),则统统抛出NoClassDefFoundError错误。因此,在Axis看来,只要类没有加载成功,哪怕这个类是存在的,也认为这个类没有找到。
猛一看很恐怖,但仔细看一下,发现是因为axis在加载提供服务的类时没有找到该类。但是该类部署并没有错误,wsdd的配置也确信没有错,怎么会找不到该类呢?后来发现这个问题是由于该类有一个static块用于初始化,而在这个初始化快中有一个类变量没有初始化而直接使用引起的。但是为什么不报NullPointerException错误呢?而是直接蹦这么一堆恐怖而又莫名其妙的错误?
后来分析了一下,我认为(纯个人观点),原因可能是这样的:
在通过浏览器查看该服务的所有服务列表时,axis会通过Class.forname方法加载每一个提供服务的类,如果加载的类有static块,则加载的时候会执行这个static块。但是如果在执行这个块的时候发生了错误(例如上面提到的NullPointerException),则统统抛出NoClassDefFoundError错误。因此,在Axis看来,只要类没有加载成功,哪怕这个类是存在的,也认为这个类没有找到。
相关文章推荐
- 使用Retrofit时出现 java.lang.IllegalArgumentException: URL query string "t={type}&p={page}&size={count}" must not have replace block. For dynamic query parameters use @Query.异常原因
- [hadoop] map函数中使用FileSystem对象出现java.lang.NullPointerException的原因及解决办法
- 使用ant编译Java编程思想出现时 java.lang.UnsupportedClassVersionError: Bad version number in .class问题
- 使用Apache JCS出现java.lang.NoClassDefFoundError: EDU/oswego/cs/dl/util/concurrent/Channel的解决办法
- 出现java.lang.UnsupportedClassVersionError 错误的原因
- struts使用JSON时出现错误java.lang.NoClassDefFoundError: org/apache/commons/lang/xwork/StringUtils .
- 在使用BitmapFactory.decodeFile时出现java.lang.OutOfMemoryError
- Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法
- Android使用KSOAP2调用WebService出现java.lang.NoClassDefFoundError.的解决办法
- 调用Set.add(All)出现java.lang.UnsupportedOperationException异常原因以及解决方法
- java.lang.StackOverflowError出现的原因
- JSP页面使用EL表达式出现的问题:javax.el.PropertyNotFoundException: Property 'ID' not found on type java.lang.Str
- Tomcat6下使用jBPM-4出现 java.lang.LinkageError。javax/el/ExpressionFactory解决办法
- 在使用MaterialDesign中的CoordinatorLayout的时候出现了如下错误:java.lang.RuntimeException: Unable to start activity
- 在使用google map 时出现Android关于java.lang.NoClassDefFoundError问题
- 出现java.lang.UnsupportedClassVersionError 错误的原因
- 【Android】使用广播时出现异常:java.lang.InstantiationException: class has no zero argument constructor
- 使用studio进行nc开发启动客户端出现 java.lang.OutOfMemoryError: Java heap space 异常
- 使用PDFBox,出现Exception in thread "main" java.lang.NoSuchMethodError: org.fontbox.cmap.CMapParser.parse
- 使用idea编辑sparkSql的程序运行出现java.lang.IllegalArgumentException: java.net.URISyntaxException