2016-11-28 39 views
0

我运行了Apache Karaf我的应用程序,我们使用的是Apache CXF 2.7.6,JAXB API版本2.2和JDK是1.7.0_80。虽然在karaf安装应用程序,我们得到以下错误:javax.xml.bind.JAXBException:财产“com.sun.xml.bind.defaultNamespaceRemap”不支持

Exception in thread "SpringOsgiExtenderThread-71" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myBean': Invocation of init method failed; nested exception is javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1482) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 
    at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:69) 
    at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:355) 
    at org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85) 
    at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320) 
    at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:132) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException 
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:371) 
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:251) 
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:539) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1608) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1549) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479) 
    ... 14 more 
Caused by: org.apache.cxf.service.factory.ServiceConstructionException 
    at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:338) 
    at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86) 
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:446) 
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:548) 
    at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:265) 
    at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:204) 
    at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:102) 
    at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:159) 
    at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211) 
    at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:456) 
    at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:334) 
    ... 23 more 
Caused by: javax.xml.bind.JAXBException 
- with linked exception: 
[javax.xml.bind.JAXBException: property "com.sun.xml.bind.defaultNamespaceRemap" is not supported] 
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:237) 
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:396) 
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:618) 
    at org.apache.cxf.common.jaxb.JAXBContextCache$2.run(JAXBContextCache.java:329) 
    at org.apache.cxf.common.jaxb.JAXBContextCache$2.run(JAXBContextCache.java:327) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.apache.cxf.common.jaxb.JAXBContextCache.createContext(JAXBContextCache.java:327) 
    at org.apache.cxf.common.jaxb.JAXBContextCache.getCachedContextAndSchemas(JAXBContextCache.java:228) 
    at org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBDataBinding.java:479) 
    at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:336) 
    ... 33 more 
Caused by: javax.xml.bind.JAXBException: property "com.sun.xml.bind.defaultNamespaceRemap" is not supported 
    at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:115) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:222) 
    ... 42 more 

请你让我知道什么可以做这里来解决这个问题?非常感谢在这方面的任何帮助。

enter image description here

回答

1

尝试com.sun.xml.internal.bind.defaultNamespaceRemap代替。

你可能会使用JAXB RI与JDK打包,不是独立的。该JAXB软件包从com.sun.xml.bind被重新打包为com.sun.xml.internal.bind。在重新包装期间,他们也可能会改变常数。挺酷的。

com.sun.xml.internal.bind.api.JAXBRIContext

+0

谢谢Lexicore供您评论。我看了一下这个文件,它位于我的.m2 repo目录中的jar文件中。 C:\ Users \用户名\ .m2目录\库\ COM \太阳\ XML \绑定\ JAXB的IMPL \ 2.2 \ JAXB-implement执行-2.2.jar。那么,你如何建议编辑这个文件。这是一个已经捆绑在maven仓库中的类文件。我无法理解如何应用您的建议。我的意思是在我的源代码中没有提到这个属性。它纯粹是我的代码使用的依赖项。预先感谢您的回复。 – skyblue2323

+0

可能最好的选择是使用你提供的JAXB RI。为此,您需要精确配置应使用哪个JAXB RI。检查这个答案:http://stackoverflow.com/a/10002848/303810 – lexicore

+0

非常感谢你@lexicore。你使用lib/endorsed目录的方法确实奏效。 – skyblue2323

0

提供centos的用户的所有权限karaf目录和修改.bash_profile文件以包含JAVA_HOME并加入karaf和Maven到PATH。此外,在位于karaf bin目录中的karaf-client文件修改的运行功能,包含以下内容:

JAVA_ENDORSED_DIRS="${JAVA_HOME}/jre/lib/endorsed:${JAVA_HOME}/lib/endorsed:${KARAF_HOME}/lib/endorsed" 

exec "$JAVA" $JAVA_OPTS -Djava.endorsed.dirs="${JAVA_ENDORSED_DIRS}" -Djava.ext.dirs="${JAVA_EXT_DIRS}" -Dkaraf.instances="${KARAF_HOME}/instances" -Dkaraf.home="$KARAF_HOME" -Dkaraf.base="$KARAF_BASE" -Djava.io.tmpdir="$KARAF_DATA/tmp" -Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" $KARAF_OPTS $OPTS -classpath "$CLASSPATH" org.apache.karaf.client.Main "[email protected]" 

重要参考链接的lib /核准办法:

https://jaxb.java.net/guide/Migrating_JAXB_2_0_applications_to_JavaSE_6.html

How to specify a particular JAXB implementation?