2012-05-09 27 views

回答

1

Hadoop支持Jar-in-jars(即jar文件中lib文件夹中的jar文件 - 不是很好!)。目前的Java版本都不支持jar-in-jar(我认为8支持这个,至少我认为我已经读过一些关于这个的抱怨,但是肯定不会引用我的话),这就是Hadoop实现了这一点。

为什么要在创建一个超级罐的时候做jar-in-jar?构建时间可能是一个原因(拆包和重新包装巨大的depedant罐可能会增加几秒甚至几分钟到你的编译时间)。我相信还有更多,但对我来说,我认为最终的罐子是'更干净'的 - 我猜是个人喜好。

+0

实际上是否在野外的罐子里产生了这些罐子?从我看到的情况来看,这个拆包逻辑看起来至少有5年的历史,这对于预测J8来说似乎有点早。 – VoiceOfUnreason

+0

http://stackoverflow.com/questions/2706222/create-cross-platform-java-swt-application - 最好的回答是关于Eclipse有jar-in-jar classloader的问题。看起来jar-in-jar会在Cloudera 4中被弃用--http://www.cloudera.com/blog/2011/01/how-to-include-third-party-libraries-in-your-的map-reduce作业/ –