3

在完成先决条件后,我现在正在尝试使用 mvn 构建 hadoop。但是,即使我有正确版本的 protoc,我也会收到此消息。我已经多次尝试重建 protoc 2.5.0,并且每次它的所有测试都会通过并成功构建。不知道为什么会一直这样,求大神帮忙。谢谢。

[错误] 无法在项目 hadoop-common 上执行目标 org.apache.hadoop:hadoop-maven-plugins:3.0.0-SNAPSHOT:protoc (compile-protoc): org.apache.maven.plugin.MojoExecutionException: protoc failure -> [Help 1] [ERROR] [ ERROR] 要查看错误的完整堆栈跟踪,请使用 -e 开关重新运行 Maven。[错误] 使用 -X 开关重新运行 Maven 以启用完整的调试日志记录。[ERROR] [ERROR] 有关错误和可能的解决方案的更多信息,请阅读以下文章: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException [ERROR] [ ERROR] 纠正问题后,您可以使用命令 [ERROR] 恢复构建 mvn <goals> -rf :hadoop-common

TJ@DESKTOP-6940Q5M /cygdrive/e/hdc $ protoc --version libprotoc 2.5.0

感谢我错过了使用 -e 开关在重新运行时上传显示的建议。这里是。

无法在项目 hadoop-common 上执行目标 org.apache.hadoop:hadoop-maven-plugins:3.0.0-SNAPSHOT:protoc (compile-protoc): org.apache.maven.plugin.MojoExecutionException: protoc failure -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: 无法在项目 hadoop-common: org.apache 上执行目标 org.apache.hadoop:hadoop-maven-plugins:3.0.0-SNAPSHOT:protoc (compile-protoc)。 maven.plugin.MojoExecutionException:在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 的 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) 的协议失败在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 在 org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 在 org.apache.maven。 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 的生命周期.internal.LifecycleStarter.execute(LifecycleStarter.java:128) org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 的 org .apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 在 org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) 在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java :288) 在 org.apache.maven.cli.MavenCli.main(MavenCli.java:199) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect。NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.codehaus.plexus.classworlds .launcher.Launcher.launchEnhanced(Launcher.java:289) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher .java:415) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 引起:org.apache.maven.plugin.MojoExecutionException: org.apache.maven.plugin.MojoExecutionException: protoc在 org.apache.maven.plugin.DefaultBuildPluginManager 的 org.apache.hadoop.maven.plugin.protoc.ProtocMojo.execute(ProtocMojo.java:105) 失败。executeMojo(DefaultBuildPluginManager.java:134) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) ... 20 更多原因:org.apache.maven.plugin.MojoExecutionException: protoc failure at org.apache.hadoop.maven.plugin.protoc.ProtocMojo.execute(ProtocMojo.java:102) ... 22 更多

我真的不知道它的问题是什么,因为我是 hadoop 的初学者。请帮忙。

4

2 回答 2

2

遗憾的是,hadoop maven protobuf 编译器在出现错误时毫无用处。

这可能只是.protoc文件中没有报告的一些错误,而是 mvn 只是失败而没有显示根本原因。

我最终通过使用 protoc 命令行工具来调试编译问题。

于 2016-02-04T15:01:05.767 回答
1

看来你需要安装protobuf-compiler. 然后构建 hadoop-maven-plugins。回到hadoop源代码父目录并执行maven目标

cd <hadoop_source_path>
sudo yum install protobuf-compiler
cd hadoop-maven-plugins
mvn install
cd ..
mvn package -skipTests

这对我有用。

于 2017-02-25T20:33:46.053 回答