包org.apache.hadoop.ipc.protobuf为空

时间:2014-04-17 16:54:26

标签: java eclipse apache hadoop protocol-buffers

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

但是,我在test 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 包是空的。难道我做错了什么?缺少一些配置步骤?

3 个答案:

答案 0 :(得分:3)

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

执行maven install mvn install -DskipTests时,protoc编译器将生成相应的.java文件

有关设置hadoop构建环境的信息,请参阅以下链接

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

安装本机库 安装protobuf等。有关详细信息,请参阅上面的链接

成功执行命令mvn install -DskipTests后,您可以看到protobuf包下的java文件

答案 1 :(得分:1)

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

答案 2 :(得分:0)

与protobuf相关的Java文件位于您的import React from 'react' import { mount } from 'enzyme' import Container from '../Container' describe('<Container />', () => { it('renders and hides second row elements'), () => { const container = mount( <div style={{ width: 200 }}> <Container> ...childrens </Container> </div> ) expect(wrapper.render()).toMatchSnapshot() }) }) 中,其中${project.build.directory}/generated-sources/java在我的情况下为project.build.directory。 因此,完整路径为<module_path>/target。我使用Intellij的想法,在将上述完整路径标记为源根目录之后,一切正常。您可以尝试将<module_path>/target/generated-sources/java标记为源根。