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