Harsh J created HADOOP-9424: ------------------------------- Summary: The "hadoop jar" invocation should include the passed jar on the classpath as a whole Key: HADOOP-9424 URL: https://issues.apache.org/jira/browse/HADOOP-9424 Project: Hadoop Common Issue Type: Bug Components: util Affects Versions: 2.0.3-alpha Reporter: Harsh J Assignee: Harsh J Priority: Minor
When you have a case such as this: {{X.jar -> Classes = Main, Foo}} {{Y.jar -> Classes = Bar}} With implementation details such as: * Main references Bar and invokes a public, static method on it. * Bar does a class lookup to find Foo (Class.forName("Foo")). Then when you do a {{HADOOP_CLASSPATH=Y.jar hadoop jar X.jar Main}}, the Bar's method fails with a ClassNotFound exception cause of the way RunJar runs. RunJar extracts the passed jar and includes its contents on the ClassLoader of its current thread but the {{Class.forName(…)}} call from another class does not check that class loader and hence cannot find the class as its not on any classpath it is aware of. The script of "hadoop jar" should ideally include the passed jar argument to the CLASSPATH before RunJar is invoked, for this above case to pass. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira