标题说明了一切;
“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/