windows 环境下的 protoc 安装

最近弄hadoop 代码 编译安装时,出现如下错误

[ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:2.6.4:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: 'protoc --version' did not return a version -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:2.6.4:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: 'protoc --version' did not return a version
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 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)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: org.apache.maven.plugin.MojoExecutionException: 'protoc --version' did not return a version
        at org.apache.hadoop.maven.plugin.protoc.ProtocMojo.execute(ProtocMojo.java:105)

原因:
没有安装protoc

window 环境安装

步骤1: 软件准备

  1. protobuf-2.5.0.tar.gz
  2. protoc-2.5.0-win32.zip

步骤2: 安装

  1. 解压protobuf-2.5.0.tar.gz 和 protoc-2.5.0-win32.zip
  2. 将protoc-2.5.0-win32中的protoc.exe拷贝到c:\windows\system32中
  3. 将protoc.exe文件拷贝到解压后的XXX\protobuf-2.5.0\src目录中
  4. 进入XXX\protobuf-2.5.0\Java 目录
    执行【mvn package】命令编辑该包 生成protobuf-java-2.5.0.jar文件(位于target目录中)
  5. 配置protoc.exe的path路径,并重启计算机
Protocol Buffers (简称Protobuf) 是Google开发的一种数据序列化方案,它允许将结构化的数据定义为.proto文件,然后通过protoc编译器生成对应的语言绑定。配置protoc环境变量主要是为了方便在命令行中跨平台使用protoc工具。 首先,你需要确保protoc编译器已经安装在你的系统上,并添加到PATH环境变量中。这通常意味着在Windows上,protoc.exe应该位于`%USERPROFILE%\AppData\Local\Google\Protobuf\bin`目录下;在Linux或MacOS上,它可能会在`$HOME/.local/bin`或其他类似路径。 如果你需要自定义搜索路径以便找到.proto文件,你可以设置`PROTOC_PATH`环境变量,这个变量包含一个冒号分隔的文件路径列表,protoc会在这些路径中查找.proto文件。 以下是Windows和Linux/Mac OS下的环境变量配置示例: **Windows:** 1. 打开“控制面板” > “系统和安全” > “系统” > “高级系统设置” 2. 点击“环境变量”按钮,在系统的“Path”编辑框中,如果找不到protoc,可以手动添加`%ProgramFiles%\Google\Protobuf\bin`。 3. 可选地,如果想指定额外的`.proto`文件夹,可以在用户变量里创建名为`PROTOC_PATH`的新项,例如`%USERPROFILE%\MyProtos`。 **Linux/Mac OS:** 1. 打开终端并输入 `nano ~/.bashrc` 或者 `vi ~/.bash_profile` 2. 添加一行类似于`export PATH=$PATH:/path/to/protobuf/bin`,替换`/path/to/protobuf/bin`为你实际的protoc路径。 3. 同样,如果你想添加特定的.proto文件夹,可以用`export PROTOC_PATH=$PROTOC_PATH:/path/to/my/proto/files`。 保存并关闭文件后,运行`source ~/.bashrc`或`source ~/.bash_profile`让更改生效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值