我刚刚获得最后一个稳定的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 包是空的。难道我做错了什么?缺少一些配置步骤?
答案 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
标记为源根。