当前位置: 首页 > 知识库问答 >
问题:

如何将Apach AVRO IDL编译成java?

商同
2023-03-14

我有一个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。

共有1个答案

穆彬郁
2023-03-14

您可以使用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帮助菜单没有显示这样的选项。

 类似资料:
  • 上一章讲述了如何从rust中调用c库,这一章我们讲如何把rust编译成库让别的语言通过cffi调用。 调用约定和mangle 正如上一章讲述的,为了能让rust的函数通过ffi被调用,需要加上extern "C"对函数进行修饰。 但由于rust支持重载,所以函数名会被编译器进行混淆,就像c++一样。因此当你的函数被编译完毕后,函数名会带上一串表明函数签名的字符串。 比如:fn test() {}会

  • 问题内容: 它可以有效地编译到哪一个? 或类似的东西 那么它会替代(某种内联),还是实际上创建一个匿名类? 问题答案: VM决定如何实现lambda,而不是编译器。 请参阅《 Lambda表达式的翻译》中的部分。 我们没有生成字节码来创建实现lambda表达式的对象(例如,调用内部类的构造函数),而是描述了构造lambda的方法,并将实际构造委托给语言运行时。该配方被编码在invokedynami

  • 有人能把它翻译成python代码吗,例如,我知道第一行和第二行将是 我只是想不出其他的

  • 我使用thymeleaf生成一个包含一些javascript的页面。js是用thymeleaf生成的,目的是将java模型的某些部分放到我的页面中。 我知道如何使用thymeleaf将一些翻译成html。 但是现在我想把一些thymeleaf翻译成我生成的js,以便集中我的翻译工作。 理想情况下,我希望有一个变量,该变量将包含我翻译的所有消息。这个变量将在genrated js脚本中初始化。 有关