JAXB出现的怪异的异常及解决办法
关键字: Exception,java.lang.NoClassDefFoundError: javax/activation/D笔者做好了一个Java Application的JAXB Project之后,想把它应用到Web Project中,用于实现我们实验室的构建库项目中的REST服务。本来以为三两下就可以搞定,没想到碰到一个怪异的异常,结果搞了整整一天才弄出来。故把它贴出来,希望对同样遇到这样问题的人有所帮助。
异常如下:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
root cause
java.lang.NoClassDefFoundError: javax/activation/DataSource
com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.<clinit>(RuntimeBuiltinLeafInfoImpl.java:172)
com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.<init>(RuntimeTypeInfoSetImpl.java:25)
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:78)
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:41)
com.sun.xml.bind.v2.model.impl.ModelBuilder.<init>(ModelBuilder.java:97)
com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.java:44)
com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:320)
com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:198)
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:76)
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:55)
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:124)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:132)
javax.xml.bind.ContextFinder.find(ContextFinder.java:286)
javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:358)
javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:323)
javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:244)
RestServlet.doGet(RestServlet.java:78)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/
解决办法:将\jwsdp-2.0\jwsdp-shared\lib目录下的activation.jar拷贝到Tomcat 5.5\common\lib。
笔者征询了一些,觉得这个在application中可以运行,但是在web project却抛出异常的原因可能是:application加载xmlObj.component的时候用的是System的类加载器,web中用的是加载你这段程序的类加载器,两者类路径不同,造成这个错误
发表评论
- 浏览: 8259 次
- 性别:

- 来自: 广州

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
谈新手修练J2EE武功及学SS ...
好文章,好建议。 我从事j2ee开发快两年了,但感觉技术一直没什么大的 ...
-- by 清风朗月 -
JAXB2.0 Project实例
不错Binding Schema那块也一起讲讲就好了
-- by Joo -
REST架构风格的性能为何比 ...
我只是一个刚刚学REST的学生,对SOAP也不是很熟。这篇文章我贴明是转贴过来的 ...
-- by younker -
REST架构风格的性能为何比 ...
呵呵,看楼主的意思好像是搞了10多年的soap的样子? REST最优?证据呢?拿 ...
-- by yananay -
RESTful Web Services---a ...
这篇文章详细讲述了REST的实现,是一篇不可多得的好文章
-- by younker






评论排行榜