多语言展示
当前在线:554今日阅读:138今日分享:34

JAXB 2.0 API is being loaded

导入一个spring版本比较老的项目,出现了 如下错误:Exception in thread 'main' java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrapclassloader, but this RI (from jar:file:/D:/work/tuscany-sca-1.6.2/lib/jaxb-impl-2.1.7.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/)at com.sun.xml.bind.v2.model.impl.ModelBuilder.(ModelBuilder.java:173)at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:422)at com.sun.xml.bind.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:286)at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139)at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:585)at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:210)at javax.xml.bind.ContextFinder.find(ContextFinder.java:368)at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:220)at com.sun.xml.ws.spi.ProviderImpl$2.run(ProviderImpl.java:218)at java.security.AccessController.doPrivileged(Native Method)at com.sun.xml.ws.spi.ProviderImpl.getEPRJaxbContext(ProviderImpl.java:217)at com.sun.xml.ws.spi.ProviderImpl.(ProviderImpl.java:88)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)at java.lang.reflect.Constructor.newInstance(Constructor.java:494)at java.lang.Class.newInstance0(Class.java:350)at java.lang.Class.newInstance(Class.java:303)at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:36)at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:95)at javax.xml.ws.spi.Provider.provider(Provider.java:76)at javax.xml.ws.Service.(Service.java:57)at helloworld.test.HelloWorldComponent.(HelloWorldComponent.java:55)at helloworld.test.Test.main(Test.java:10)经过各种尝试都不好用,以下是解决方法。
工具/原料
1

eclipse

2

jdk,tomcat

方法/步骤
1

出现这个错儿是由于系统加载了JAXB 2.0 API,但需要调用 tuscany服务,即需要采用jaxb-impl-2.1.7.jar,有版本冲突。如下是一种解决方案,将所需jar引入到classpath中。

2

方法2,不用上述步骤,通过上述方法中图3,看bootstrap路径,本人地址为 apache-tomcat-6.0.44\bin 路径下,则将jaxb-impl-2.1.7.jar 放入该路径下即可。

3

这里还需要注意一下,由于是比较老的项目,如果有条件,咨询一下熟悉项目的人,用对tomcat版本和JDK版本很重要,目前开发用的tomcat7,jdk7。但是该项目需要tomcat6 和jdk1.6. 不然也会造成各种class not fond的错误。

5

另:虽然有些项目有pom.xml 文件,但是一定要看清楚,不一定是 maven项目哦,我就被这个坑了一上午,安装maven后,怎么起还是起不来服务。如下图:虽然有 pom.xml 但是 lib下还有各种所需的jar包。所以,不需要配置maven! 只需要按照其他项目里面.setting文件夹拷过来修改一下,并修改.project文件即可。

推荐信息