在Windows上安装并使用Java协议缓冲区

在Windows上安装并使用Java协议缓冲区,java,protocol-buffers,Java,Protocol Buffers,在Windows环境中使用for Java的文档不是很友好、分散,并且使新用户感到困惑。这里有一个小小的尝试来帮助新的探险家 从下载Win32二进制文件-在编写本文时,最新版本是v3.3.0,因此需要使用合适的二进制文件 将此zip文件解压缩到一个目录中,并将其下的bin目录添加到系统路径环境变量中 从Github存储库签出源代码-由于v3.3.0是最新版本,请签出相同的标记,而不是主标记 从步骤1复制protoc.exe并将其粘贴到签出位置的src目录下 继续运行此处提供的maven任务- 要

在Windows环境中使用for Java的文档不是很友好、分散,并且使新用户感到困惑。这里有一个小小的尝试来帮助新的探险家

  • 从下载Win32二进制文件-在编写本文时,最新版本是v3.3.0,因此需要使用合适的二进制文件
  • 将此zip文件解压缩到一个目录中,并将其下的bin目录添加到系统路径环境变量中
  • 从Github存储库签出源代码-由于v3.3.0是最新版本,请签出相同的标记,而不是主标记
  • 从步骤1复制protoc.exe并将其粘贴到签出位置的src目录下
  • 继续运行此处提供的maven任务-
  • 要在图书馆中运行

  • 将上述步骤1中的
    protoc.exe
    复制到首选位置,并确保将该位置添加到
    Path
    环境变量中。为确保正确执行,请打开一个新的命令提示符并运行
    protoc--version
    ,以查看您安装的相应版本
  • 根据示例创建协议格式的Java包-如所述在
    addressbook.proto
    中定义-
    protoc-I=$SRC_DIR--Java_out=$DST_DIR$SRC_DIR/addressbook.proto
    -这将在包
    com.example.tutorial
    下生成所需的
    AddressBookProtos
    类,该类是编译示例代码时需要

  • 一旦生成的代码位于示例类路径中,就可以执行代码


  • 作为一种更简单的方法,特别是对于临时用户,您还可以:

  • 在此处复制并粘贴您的架构片段:
  • 选择“(protoc)Java”(或您需要的任何语言),然后单击“生成”
  • 复制出您的代码,或者惊叹于您的模式片段中编辑器中的错误和警告
  • 目前的限制:

    • 只有一个输入和输出文档可用-这纯粹是一个UI问题(我需要一个选项卡式编辑器工作,希望在本周)
    • 这也意味着“导入”受到严重限制——尽管一些内置的导入可以正常工作(“例如google/protobuf/duration.proto”可以正确解析和工作)
    • 目前,如果“非protoc”解析器检测到语法错误,并且您的模式包含单词“import”,它将不会调用“protoc”——这是在我调查protoc是否会被滥用以访问意外文件的时候

    你想出了一个很好的工具。这对大多数用户来说肯定有帮助,因为生成存根将是一项罕见的活动。不知道为什么,但当我尝试使用Java和其他一些语言时,它对我不起作用。@PavanKumar,哈,这很奇怪-我在发布之前在Java上尝试过它(针对我自己的一些东西);您的模式是否涉及非默认协议的“导入”?如果是:参见上述限制;我打算很快改用选项卡式编辑器,它将支持多种输入和输出,包括“导入”。如果不是“导入”限制,我很想知道你做了什么see@PavanKumar哦,我看到问题了-我能解决-一秒钟。。。;更新:问题是我没有检查生成文件的子文件夹-我想我自己的烟雾测试没有指定包,所以:没有文件夹;目前正在部署修复程序-过一会儿,这将是一个非常重要的示例(而且)它对我不起作用。我粘贴了模式并选择了Java。单击“生成”按钮不执行任何操作。我希望有一些输出。@Mandroid经过测试,在这里工作正常,但看起来可能“protoc”的错误突出显示已中断-我猜架构中有错误,但它不能完全告诉您什么-我需要查看。FWIW,当模式出现错误时,在选择protoc的情况下,我将得到
    {“files”:null,“parserExceptions”:null,“exception”:null}
    ,这是。。。不好