0

我有一个 Apache AVRO IDL,它定义了我想在 java 客户端和用 Python 编写的服务器之间使用的协议。

@namespace("myproto.proto")

protocol myproto 
{

  enum Status
  {
    STATUS_OK,
    STATUS_ERROR
  }

  record GameList
  {
    array<string> games;
  }

  void somefunc(int arg);
}

对于 Python,我使用这个:

AVROTOOLS=$(TOOLS_PATH)/avro-tools-1.7.4.jar
java -jar $(AVROTOOLS) idl fairunfair.avdl fairunfair.avpr

如何将 IDL 编译成 Java?如果可能,不使用 Maven。

4

1 回答 1

1

您可以使用 avro-tools 从 IDL 生成 JSON 模式:

java -jar avro-tools-1.7.4.jar idl /path/to/idl

然后像往常一样将模式编译成Java:

java -jar avro-tools-1.7.4.jar compile schema /path/to/schema .

我认为没有任何方法可以从 IDL 直接编译为 Java。avro-tools 帮助菜单没有显示这样的选项。

于 2013-11-08T21:21:49.843 回答