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

Modifying Hadoop 2.7.1's DFSOutputStream.java With Dependencies

我目前正在尝试通过 java 文件修改 hadoop 中文件拆分的块大小(不,我不想通过 xml 文件修改它)和 java 我需要修改的文件称为 DFSOutputStream.java (在 org.apache.hadoop.hdfs 包中)。在 hadoop 2.7.1 中,此 java 文件位于名为 hadoop-hdfs-2.7.1.jar 的 jar 文件中当我提取它时,它包含一个名为 DFSOutputStream.class 的 class 文件。反编译 DFSOutputStream.class 后,我检索了 DFSOutputStream.java 文件,这是我可以在 java 代码中修改块大小的地方。

因为使用了 eclipse maven 插件DFSOutputStream.java 的 dependencies/imports 没有错误,所有导入都被检测到并正常工作。但是,DFSOutputStream.java 无法解析任何具有 DataStreamer 类型变量声明的变量。是否缺少 class 文件以便此 class 变量 (DataStreamer) 起作用?

再说一次,我认为我的依赖项没有任何问题,因为我所有的导入都没有错误。只是一个变量,如果我错了,请赐教。

可能是你使用的反编译器的问题(或限制或设置),没有显示内部 class DataStreamer.

不使用反编译器,您可以直接查看 library, the sources classifier jar is available from the Maven repository here.

的源代码

下载并找到相关的 class,您会在第 227 行找到 DataStreamer class 的正确声明:

  class DataStreamer extends Daemon {
     ...

通常,大多数 Maven 依赖项将始终提供其 sources(和 javadoc)classifier,无需使用反编译器。请注意,Maven 不知道源代码或 javadoc,它们只是相同库和版本的 class 化器,因此它们不一定会一直存在,但很可能会存在。

如果您想从 Maven 中获取源代码而无需手动浏览和下载它们,您可以查看 another SO question and answer 主题。