私は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は以下になります。 これらのコンパイルエラーをどのように修正する必要がありますか?
私は、すでに私のライブラリルートにprotobuf-java-2.0.5 jarがあることを追加したいだけです。 –
何らかの理由で、コンパイラはprotobufライブラリを表示しません。おそらくsbtビルドルールの問題です。 sbtがライブラリのルートを使用していますか? javacとprotobuf-java-2.0.5.jarをクラスパスに手動でxxx.javaをコンパイルしようとしましたか? –
はい、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 –