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

在protobuf生成的java文件上得到编译错误-如何编译?

仲俊豪
2023-03-14

[ERROR]$home/workspace/javaExamplePbServiceCall/src/main/java/example/ServiceCallPiqi.java:[13,23]ERROR:';‘预期

手工编译产生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
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>

我如何让它编译?

共有1个答案

康泽宇
2023-03-14

解析器类是在2.5.0版本之后才添加的,但是您声明了对protobuf V2.4.1的依赖。

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

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

 类似资料:
  • 我试图从protobuf生成java类。 下面是我的协议- 我运行命令main/exec/protoc--java\u out=main/java main/proto/datamodel。协议 该协议是从链接https://github.com/protocolbuffers/protobuf/releases/tag/v3.7.1下载的,osx-x86_64.zip.我也尝试了3.8.0和3.

  • 我写了下面提到的一个简单的java程序。不幸的是,编译错误发生了。 在编译过程中,在命令提示符下会显示以下内容: c:\Java 它对我的任何程序都不起作用,即使是这个简单的程序也不行!这是为什么? 编辑: 现在我有: 而且它不起作用。为什么不起作用? 它说的和以前一样。 你对Java所说的。lang.String[]有效,但为什么不能呢?为什么我以前不需要穿上这些?

  • 我创建了一个简单的. proto文件并执行了编译器(protoc-2.5.0rc1-win32.zip)。为规定的包生成了一个java文件。但是,生成的文件不会编译。. proto文件很简单,只有一条消息,其中包含一堆简单类型的可选字段(正确编号)。. java文件不编译,例如: 构造函数生成了消息。FieldAccessorTable(Descriptors.Descriptor,字符串[])未

  • []Flutter(Channel master,v1.4.12-pre.27,on Linux,locale en_us.utf-8)•Flutter版本1.4.12-pre.27 at/home/jeremy/fluttersdk/Flutter•Framework修订版a12c5618de(5小时前),2019-04-08 11:22:19-0400•Engine修订版ff1bcdc009•

  • 问题内容: 我有以下由Eclipse生成的代码(.java文件)。 现在,我想从命令行编译以上文件。我转到了源代码所在的目录,并尝试了两个命令: 1. javac HelloWorldSWT.java 2. javac -d / home / myname / workspace / HelloWorldSWT.java 在这两种情况下,我都有相同的错误“无法解析导入org.eclipse”。/

  • 我正在与ATM案例研究一起工作,从Deitel java如何编程第9版。 案例研究在第13章,第546页(万一有人有这本书并想要查看),我确信我的代码是100%如书中所建议的那样。 我已经设置了所有的代码,但当我尝试运行程序时,它给了我以下信息: 当我试图从类路径使用terminal编译类时,它给出了以下错误: 这是正在进行的课程:直截了当地往前走,但我似乎找不到问题所在。有人帮忙吗?