Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hadoop jaxb类路径问题_Java_Hadoop_Jaxb - Fatal编程技术网

Java hadoop jaxb类路径问题

Java hadoop jaxb类路径问题,java,hadoop,jaxb,Java,Hadoop,Jaxb,我在hadoop作业中看到了这一点: 2014-08-21 09:26:57,216 ERROR org.apache.hadoop.mapred.Child: Error running child : java.lang.ExceptionInInitializerError at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:107) at com.sun

我在hadoop作业中看到了这一点:

2014-08-21 09:26:57,216 ERROR org.apache.hadoop.mapred.Child: Error running child : java.lang.ExceptionInInitializerError
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:107)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:129)
    at com.sun.proxy.$Proxy61.describeVehicle(Unknown Source)
    at com.company.inventory.externalapi.externalsoapclient.ExternalClientImpl.getFromSoap(ExternalClientImpl.java:46)
    at com.company.dataservices.external.hadoop.ExternalIngestionProcess.populateExternalCache(ExternalIngestionProcess.java:112)
    at com.company.dataservices.external.hadoop.ExternalIngestionProcess.map(ExternalIngestionProcess.java:93)
    at com.company.dataservices.external.hadoop.ExternalIngestionProcess.map(ExternalIngestionProcess.java:38)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:140)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:672)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:330)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1438)
    at org.apache.hadoop.mapred.Child.main(Child.java:262)
Caused by: java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.internal.bind.api.JAXBRIContext
    at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.<clinit>(SOAPFaultBuilder.java:550)
    ... 16 more
2014-08-21 09:26:57216错误org.apache.hadoop.mapred.Child:运行Child:java.lang.ExceptionInInitializeError时出错
位于com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:107)
位于com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
位于com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:129)
位于com.sun.proxy.$Proxy61.descripebehice(未知来源)
位于com.company.inventory.externalapi.externalsoapclient.ExternalClientImpl.getFromSoap(ExternalClientImpl.java:46)
位于com.company.dataservices.external.hadoop.ExternalIngestionProcess.populateExternalCache(ExternalIngestionProcess.java:112)
位于com.company.dataservices.external.hadoop.ExternalIngestionProcess.map(ExternalIngestionProcess.java:93)
位于com.company.dataservices.external.hadoop.ExternalIngestionProcess.map(ExternalIngestionProcess.java:38)
位于org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:140)
位于org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:672)
位于org.apache.hadoop.mapred.MapTask.run(MapTask.java:330)
位于org.apache.hadoop.mapred.Child$4.run(Child.java:268)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.security.auth.Subject.doAs(Subject.java:415)
位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1438)
位于org.apache.hadoop.mapred.Child.main(Child.java:262)
原因:java.lang.ClassCastException:com.sun.xml.bind.v2.runtime.JAXBContextImpl无法转换为com.sun.xml.internal.bind.api.JAXBRIContext
位于com.sun.xml.internal.ws.fault.SOAPFaultBuilder。(SOAPFaultBuilder.java:550)
... 还有16个
这个问题看起来与类似,只是我没有在我的类路径上提供任何jax-b依赖项。然而,它看起来确实像hadoop


有没有办法强迫hadoop使用jdk jaxb JAR,或者只使用它自己提供的jaxb JAR,而不是两者混合使用?

坦率地说,这听起来不像hadoop bug。正如您已经提到的,正确的解决方案是修复类路径,但请尝试以下方法:

-Djavax.xml.bind.JAXBContext=com.sun.xml.internal.bind.v2.ContextFactory


你说得对,严格来说,这不是Hadoop bug,更像是类路径的麻烦。我想我试过了,但它不起作用。对不起,这是我唯一的解决办法。据我所知,没有其他方法可以指定要使用的工厂。