使用依赖项修改Hadoop 2.7.1的DFSOutputStream.java

时间:2016-01-15 04:44:41

标签: java eclipse maven hadoop hdfs

我目前正在尝试通过java文件修改hadoop中文件拆分的块大小(不,我不想通过xml文件修改它),并且我需要修改的java文件被调用DFSOutputStream.java(在org.apache.hadoop.hdfs包中)。在 hadoop 2.7.1 中,这个java文件位于名为 hadoop-hdfs-2.7.1.jar 的jar文件中,当我解压缩它时,它包含一个名为的文件DFSOutputStream.class。一旦我反编译DFSOutputStream.class,我就会检索DFSOutputStream.java文件,这就是我可以在java代码中修改块大小的地方。

由于使用了 eclipse maven插件DFSOutputStream.java的依赖关系/导入无误,所有导入都被检测到并正常工作。但是,DFSOutputStream.java无法使用DataStreamer类型的变量声明来解析任何变量。是否有一个我缺少的类文件,以便这个类变量(DataStreamer)工作?

再一次,我不认为我的依赖项有任何问题,因为我的所有导入都可以正常运行。它只是一个变量,如果我错了,请赐教。

1 个答案:

答案 0 :(得分:1)

这可能是您使用的反编译器的问题(或限制或设置),它没有显示内部类DataStreamer

您可以直接查看library的来源,而不是使用反编译器,可以从Maven存储库here获取sources分类器jar。

下载并进入相关课程,您将在第227行找到DataStreamer课程的正确声明:

  class DataStreamer extends Daemon {
     ...

通常,大多数Maven依赖项将始终提供其sources(和javadoc)分类器,无需使用反编译器。请注意,Maven并不知道source或javadoc,它们只是同一个库和版本的分类器,所以它们总是在那里并不一定是真的,但很可能它们会。

如果您想在不浏览和手动下载Maven的情况下获取源代码,您可以查看有关该主题的another SO question and answer