java - protobuf 生成的 java 文件出现编译错误 - 如何编译?

标签 java protocol-buffers javac

标题说明了一切;

“mvncompile”产生大量错误,这是第一个:

[错误] $HOME/workspace/JavaExamplePBServiceCall/src/main/java/example/ServicecallPiqi.java:[13,23] 错误:“;”预计

手动编译产生 100 个错误,这是第一个:

javac -cp $HOME/.m2/repository/com/google/protobuf/protobuf-java/2.4.1/protobuf-java-2.4.1.jar ServicecallPiqi.java

ServicecallPiqi.java:535: error: cannot find symbol
    public static com.google.protobuf.Parser<params> PARSER =
                                     ^
  symbol:   class Parser
  location: package com.google.protobuf

ServicecallPiqi.java 的开头:

package example;
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: pb_piqi_out/servicecall.piqi.proto

public final class ServicecallPiqi {
  private ServicecallPiqi() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  /**
   * Protobuf enum {@code cast_type}
   */
  public enum cast_type implements
//  ^^^^^^^^^^^^^ OFFENDING line 

这是我的 pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>example</groupId>
  <artifactId>JavaExamplePBServiceCall</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>PBServiceCallExample</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
      <version>2.4.1</version>
    </dependency>
  </dependencies>
</project>

如何编译它?

最佳答案

The Parser classes have been added only after version 2.5.0 ,但您声明对 protobuf v2.4.1 的依赖。

您可能使用比您添加到 POM 文件中的运行时类更高版本的编译器来编译 .proto 文件。

更新您的依赖项/降级您的 protoc 编译器,一切都会正常工作。

关于java - protobuf 生成的 java 文件出现编译错误 - 如何编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27208615/

相关文章:

javascript - 使用 Selenium webdriver 加载动态 url

go - Proto3 for Go 的可选支持

cmake - 使用cmake创建protobuf/grpc cc文件

java - 为什么我们需要让javac来编译多个源文件?

eclipse - Eclipse IDE 和 javac 之间的类大小不同

java - 弃用的编译错误

java - 如何在 GUI (java) 中显示 void 函数?

java - 如何点击 jsonobject/listview 提要项?

java - Eclipse 工具提示

Java:Protobuf字节到Json字符串到Pojo快速