【问题标题】:Package org.apache.hadoop.ipc.protobuf empty包 org.apache.hadoop.ipc.protobuf 为空
【发布时间】:2026-01-06 23:45:01
【问题描述】:

我刚刚获得了最后一个稳定的 Hadoop 版本(2.4)并按照this 指令将其导入 Eclipse。

但是,我在测试 src 文件夹中有几个 cannot be resolved to a type 的构建错误。举个例子:

import org.apache.hadoop.ipc.protobuf.TestProtos.EchoRequestProto;
import org.apache.hadoop.ipc.protobuf.TestProtos.EchoResponseProto;
import org.apache.hadoop.ipc.protobuf.TestProtos.EmptyRequestProto;
import org.apache.hadoop.ipc.protobuf.TestProtos.EmptyResponseProto;
import org.apache.hadoop.ipc.protobuf.TestRpcServiceProtos.TestProtobufRpcProto;
import org.apache.hadoop.ipc.protobuf.TestRpcServiceProtos.TestProtobufRpc2Proto;

Eclipse 找不到任何这些类,仅仅是因为 org.apache.hadoop.ipc.protobuf 包是空的。难道我做错了什么?缺少一些配置步骤?

【问题讨论】:

    标签: java eclipse apache hadoop protocol-buffers


    【解决方案1】:

    您在 hadoop 源代码库中的这些包下找不到任何 Java 文件。该包下的Java文件将由protoc编译器生成

    当你执行maven install mvn install -DskipTests protoc 编译器会生成对应的.java 文件

    hadoop搭建环境的搭建,参考以下链接

    http://wiki.apache.org/hadoop/HowToContribute

    安装原生库 安装protobuf等。详细信息请参考上面的链接

    一旦你成功执行命令mvn install -DskipTests你可以看到protobuf包下的java文件

    【讨论】:

    • 谢谢,一切都在编译。一个后续问题:是否可以从 Eclipse 本地运行 Hadoop 2.4?还是因为 YARN 不再可能了?我在谷歌上搜索Cannot initialize Cluster. Please check your configuration... 没有成功,因为大多数问题仍然是关于 Hadoop 1.x
    • 嗨,我也遇到了同样的错误,缺少相同的包,我运行 mvn install -DskipTests 没有任何错误,但包仍然丢失。有任何想法吗?谢谢
    【解决方案2】:

    尝试 cd 到路径“/hadoop-common-project/hadoop-common/src/test/proto”并执行以下命令:protoc --java_out=../java *.proto。请注意,您应该正确安装协议缓冲区(一个 Google 项目),您可以简单地从 github 获取。

    【讨论】:

      【解决方案3】:

      与protobuf相关的java文件在你的${project.build.directory}/generated-sources/java中,在我的情况下project.build.directory<module_path>/target。 所以完整路径是<module_path>/target/generated-sources/java。我使用 Intellij 的想法,在将上述完整路径标记为源根之后,一切正常。在您的情况下,您可以尝试将<your_hadoop_project_root_path>/hadoop-common-project/hadoop-common/target/generated-sources/java 标记为源根目录。

      【讨论】: