1

簡単な .proto ファイルを作成し、コンパイラ (protoc-2.5.0rc1-win32.zip) を実行しました。所定のパッケージにjavaファイルが生成されました。ただし、生成されたファイルはコンパイルされません。.proto ファイルは単純で、一連の単純な型のオプション フィールド (適切に番号が付けられています) を持つ単一のメッセージで構成されています。.java ファイルはコンパイルされません。次に例を示します。

  • コンストラクタ GeneratedMessage.FieldAccessorTable(Descriptors.Descriptor, String[]) は未定義です
  • メソッド ensureFieldAccessorsInitialized(Class, Class) は、タイプ GeneratedMessage.FieldAccessorTable に対して未定義です
  • ...そして、同じ行に沿った他の多くのエラー(スーパークラスで最終メソッドをオーバーライドしようとするなど)

API バージョンのレベルでの不一致を示唆するエラーですか? 何か案は?

ありがとう 解決済み: 私が使用している API が期待する proto のバージョンは 2.4.1 であり、最新のものを使用していたことがわかりました。

4

3 に答える 3

2

私にとっては、古いプロトタイプ バッファ バージョンを含むまでこれを追跡し、バージョンが競合していました。

解決策:古いバージョンのプロトタイプ バッファがないか、すべてのライブラリを確認してください。すでにあるものに含まれている可能性があります。

于 2013-01-27T00:41:11.030 に答える
0

私の推測では、最初にソース配布の protobuf-2.5.0rc1.zip から新しいプロトコル buf jar ( protobuf-java-2.5.0rc1.jar ) を作成し、これを maven pom のローカルの「システム」依存関係にする必要があります。 xml。また、新しいコンパイラで新しい Java スタブを生成しただけで、pom に古い 2.4.1 jar 依存関係がある場合にもコンパイル エラーが発生します。ビルド済みの 2.5.0rc1.jar をホストする Maven リポジトリが見つかりませんでした。ソース ディストリビューションからソース ファイルを取得しただけでは、com.google.protobuf.DescriptorProtos.* などのクラス ファイルを見逃すことになります。

于 2012-12-27T17:38:36.620 に答える