我目前正在尝试通过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)工作?
再一次,我不认为我的依赖项有任何问题,因为我的所有导入都可以正常运行。它只是一个变量,如果我错了,请赐教。
答案 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。