2016-11-28 90 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?