2016-11-24 7 views
1

私はprotobufを使用する必要があるJavaでplay framework(SBTビルドツールを使用)を使用しています。だから私はxxx.protoファイルを持っています。私はバイナリprotocコンパイラを得て、クラスパスに追加しました。私が見る -sbtビルドツールを使用してJavaでprotobufsをコンパイルする際にコンパイルエラー

protoc --version
libprotoc 3.1.0

私が使用してxxx.protoファイルをコンパイルしている - protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/xxx.protoので、それはxxx.javaファイルを生成しました。

今、私はこのxxx.javaファイル(SBTのビルドツールを使用してプロジェクト)

[error] /my_project/app/helpers/xxx.java:7: package com.google.protobuf  does not exist 
[error] com.google.protobuf.ExtensionRegistryLite 
[error] /my_project/app/helpers/xxx.java:11: package com.google.protobuf does not exist 
[error] com.google.protobuf.ExtensionRegistry 
[error] /my_project/app/helpers/xxx.java:6182: package com.google.protobuf.Descriptors does not exist 
[error] com.google.protobuf.Descriptors.Descriptor 
[error] /my_project/app/helpers/xxx.java:6185: package com.google.protobuf.GeneratedMessageV3 does not exist 
[error] com.google.protobuf.GeneratedMessageV3.FieldAccessorTable` 

をコンパイルしていたとき、私は私のインストールライブラリに見る - com.google.protobuf瓶があります。

// Generated by the protocol buffer compiler. DO NOT EDIT! 
// source: xxx.proto 

public final class xxx { 
private xxx() {} 
public static void registerAllExtensions(
    com.google.protobuf.ExtensionRegistryLite registry) { 
} 

    public static void registerAllExtensions(
    com.google.protobuf.ExtensionRegistry registry) { 
    registerAllExtensions(
    (com.google.protobuf.ExtensionRegistryLite) registry); 
} 
...... 

xxx.javaファイルを生成しながら、私が見逃しているものがあります -

私xxx.protoは以下になります。 これらのコンパイルエラーをどのように修正する必要がありますか?

+0

私は、すでに私のライブラリルートにprotobuf-java-2.0.5 jarがあることを追加したいだけです。 –

+0

何らかの理由で、コンパイラはprotobufライブラリを表示しません。おそらくsbtビルドルールの問題です。 sbtがライブラリのルートを使用していますか? javacとprotobuf-java-2.0.5.jarをクラスパスに手動でxxx.javaをコンパイルしようとしましたか? –

+0

はい、javac xxx.java -cp $ PATH_TO_Protobuf_jar/protobuf-java-2.5.0.jarでも、-xxx.java:6188:エラー:package com.google.protobuf.GeneratedMessageV3が存在しません。 com.google .protobuf.GeneratedMessageV3.FieldAccessorTable ^ xxx.java:6193:エラー:com.google.protobuf.GeneratedMessageV3が com.google.protobuf.GeneratedMessageV3.FieldAccessorTable –

答えて

1

正確に同じバージョンのprotoclibprotobuf.jarを使用していることを確認する必要があります。あなたが書いたことから、protocバージョン3.1.0でlibprotobuf 2.5.0を使用しているようです。代わりにlibprotobuf 3.1.0を使用する必要があります。そうしないと、引用したようなコンパイルエラーが発生します。

関連する問題