2

阅读 od AVPR 很容易:

Protocol protocol = Protocol.parse(new File("ht-proto.avpr"));

但这不适用于 IDL 文件 (AVDL)。

如何读取 AVDL 文件以便我可以完成以下任务,但使用 AVDL 而不是 AVPR:

public static void main (String[] args)  {
     Main.class.getResourceAsStream("net/protocol_man.avdl");
     Protocol protocol  =
           Protocol.parse(Main.class.getResourceAsStream("net/protocol_man.avpr"));
                                                   //this doesnt work for AVDL       
 }
4

1 回答 1

0

如果你正在使用 Maven。您可以添加以下插件。

这将创建 java 源代码,并且您可以做几乎所有事情。

我的意思是您可以稍后参考生成的类之一,例如 Event.class

并要求它的 Schema Event.$SCHEMA

  <plugin>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro-maven-plugin</artifactId>
            <version>1.7.3</version>
            <executions>
                <execution>
                    <id>schemas</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>idl-protocol</goal>
                    </goals>
                    <configuration>
                        <includes>
                            <include>net/protocol_man.avdl</include>
                        </includes>
                        <fieldVisibility>PRIVATE</fieldVisibility>
                        <sourceDirectory>src/main/resources</sourceDirectory>
                        <outputDirectory>${project.build.directory}/generated-sources/java
                        </outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
于 2014-02-11T15:51:10.293 回答