Lorie created HADOOP-17540: ------------------------------ Summary: hadoop-client-runtime-3.3.0 not properly shading javax.xml.bind Key: HADOOP-17540 URL: https://issues.apache.org/jira/browse/HADOOP-17540 Project: Hadoop Common Issue Type: Bug Components: hdfs-client Affects Versions: 3.3.0 Reporter: Lorie
In the file hadoop-client-modules/hadoop-client-runtime/pom.xml, it excludes javax.xml.bind because it says it is part of the SE JDK. But, this is no longer true in Java 11. So, when I try to use Guice to inject objects at start up, I am getting the error Error injecting constructor, java.lang.NoClassDefFoundError: org/apache/hadoop/shaded/javax/xmlbind/ModuleUtil (wrong name: javax/xml/bind/ModuleUtil) |<exclusions>| | |<!-- these APIs are a part of the SE JDK -->| | |<exclusion>| | |<groupId>javax.xml.bind</groupId>| | |<artifactId>jaxb-api</artifactId>| | |</exclusion>| I was able to get past this by using zip to change the position of the ModuleUtil.class inside the META-INF directory. Before I made any changes: jar tvf hadoop-client-runtime-3.3.0.jar | grep ModuleUtil* META-INF/versions/9/javax/xml/bind/ModuleUtil.class org/apache/hadoop/shaded/javax/xml/bind/ModuleUtil.class After I modified the jar: jar tvf hadoop-client-runtime-3.3.0.jar | grep ModuleUtil* META-INF/versions/9/org/apache/hadoop/shaded/javax/xml/bind/ModuleUtil.class org/apache/hadoop/shaded/javax/xml/bind/ModuleUtil.class With the revised jar file, my code started. I don't know if that is the correct way to fix but it works. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: common-dev-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-dev-h...@hadoop.apache.org