You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "Sangjin Lee (JIRA)" <ji...@apache.org> on 2016/08/09 15:57:20 UTC

[jira] [Commented] (HADOOP-13410) RunJar adds the content of the jar twice to the classpath

    [ https://issues.apache.org/jira/browse/HADOOP-13410?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15413770#comment-15413770 ] 

Sangjin Lee commented on HADOOP-13410:
--------------------------------------

Thanks [~yuanbo]! The patch does what the JIRA calls for, and I tested it locally.

That said, I'd like to find out from the community if there is any reason that the jar itself needs to remain in the classpath after the unjarred content is added to the classpath. I'll ask the community.

> RunJar adds the content of the jar twice to the classpath
> ---------------------------------------------------------
>
>                 Key: HADOOP-13410
>                 URL: https://issues.apache.org/jira/browse/HADOOP-13410
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: util
>            Reporter: Sangjin Lee
>            Assignee: Yuanbo Liu
>         Attachments: HADOOP-13410.001.patch
>
>
> Today when you run a "hadoop jar" command, the jar is unzipped to a temporary location and gets added to the classloader.
> However, the original jar itself is still added to the classpath.
> {code}
>       List<URL> 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) {
>         for (File lib : libs) {
>           classPath.add(lib.toURI().toURL());
>         }
>       }
> {code}
> As a result, the contents of the jar are present in the classpath *twice* and are completely redundant. Although this does not necessarily cause correctness issues, some stricter code written to require a single presence of files may fail.
> I cannot think of a good reason why the jar should be added to the classpath if the unjarred content was added to it. I think we should remove the jar from the classpath.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-issues-help@hadoop.apache.org