为什么RunJar解压缩jar文件?

时间:2012-05-09 21:52:31

标签: hadoop

示例:http://grepcode.com/file/repository.cloudera.com/content/repositories/releases/com.cloudera.hadoop/hadoop-core/0.20.2-320/org/apache/hadoop/util/RunJar.java

我正在查看RunJar.main(),并观察它解压缩指定的jar文件,然后从原始jar和本地爆炸副本中的几个根构建一个精心设计的类路径。

它的用途是什么?爆炸jar支持哪种用例,单独包含原始jar文件不包括在内?

1 个答案:

答案 0 :(得分:1)

Hadoop支持jar-in-jars(即jar文件中lib文件夹中的jar文件 - 不满嘴!)。当前的Java版本都没有支持jar-in-jar(我认为8传言支持这个,至少我认为我已经阅读了一些关于此的抱怨,但肯定不会引用我的话),这就是如何Hadoop实现了这一点。

为什么你想在创造一个优步罐子的时候做jar-in-jar?构建时间可能是一个原因(解压缩和重新打包巨大的depedant jar可能会为你的构建时间增加几秒甚至几分钟)。我相信还有更多,但对我而言,我认为生成的罐子“更清洁” - 我猜是个人喜好。