diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/RunJar.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/RunJar.java index d91a78b8b2..19b51ad692 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/RunJar.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/RunJar.java @@ -226,7 +226,7 @@ public class RunJar { unJar(file, workDir); - ClassLoader loader = createClassLoader(workDir); + ClassLoader loader = createClassLoader(file, workDir); Thread.currentThread().setContextClassLoader(loader); Class mainClass = Class.forName(mainClassName, true, loader); @@ -250,13 +250,14 @@ public class RunJar { * the user jar as well as the HADOOP_CLASSPATH. Otherwise, it creates a * classloader that simply adds the user jar to the classpath. */ - private ClassLoader createClassLoader(final File workDir) + private ClassLoader createClassLoader(File file, final File workDir) throws MalformedURLException { ClassLoader loader; // see if the client classloader is enabled if (useClientClassLoader()) { StringBuilder sb = new StringBuilder(); sb.append(workDir).append("/"). + append(File.pathSeparator).append(file). append(File.pathSeparator).append(workDir).append("/classes/"). append(File.pathSeparator).append(workDir).append("/lib/*"); // HADOOP_CLASSPATH is added to the client classpath @@ -276,6 +277,7 @@ public class RunJar { } else { List classPath = new ArrayList<>(); classPath.add(new File(workDir + "/").toURI().toURL()); + classPath.add(file.toURI().toURL()); classPath.add(new File(workDir, "classes/").toURI().toURL()); File[] libs = new File(workDir, "lib").listFiles(); if (libs != null) {