Si vous obtenez des erreurs de construction comme celles-ci lorsque vous utilisez des protobufs avec Java, regardez ci-dessous.
The method getOptions() from the type Descriptors.Descriptor refers to the missing type MessageOptions The import com.google.protobuf.DescriptorProtos cannot be resolved FileDescriptorProto cannot be resolved to a type
3 Réponses :
OK, le soi-disant didacticiel Java pour protobufs ne mentionne pas comment obtenir le Bibliothèque protobuf dans votre projet. Cela implique que tout em> le code est dans votre fichier .java unique généré, qui serait vraiment agréable, mais ce n'est pas cas. Regardez la source et vous verrez des références à < Code> com.google.protobuf code>, que vous pouvez trouver dans le répertoire La solution est dans le fichier et puis em> copie les fichiers Java dans votre projet. p> p> java / src / main / java code> de la source protobuf. Copiez cela dans votre projet cependant, et il aura des erreurs de construction. P>
readme.txt code>. Ouais, peut-être que j'aurais dû le lire, mais toutes les informations dont vous avez besoin pour commencer soient-elles dans le tutoriel de démarrage? Quoi qu'il en soit, faites ceci: p>
Cela m'a aidé tellement. Merci!
@Timmmm: Cela a aidé .. Merci .. Mais de toute façon, je ne pouvais tout simplement pas comprendre la signification de la commande "Protoc --java_out = src / Main / Java -i ../ src ../src/google/protobuf/descriptor .Proto "Bien que j'ai eu une idée vague .. alors pouvez-vous s'il vous plaît expliquer clairement ??
@Arish Run Protoc -H. -Je est le répertoire à rechercher des importations, --java_out est le répertoire dans lequel placer les fichiers source générés et le dernier argument est le fichier de proto à compiler
de readme.md code> répertoire, ouvrez
readme.md code> et exécutez la commande comme
protoc -java_out = noyau / src / main / java -i ../ src \ ../ src / google / protobuf / descriptor.proto code> Si vous êtes nouveau venu de Protobuf comme je le fais avec la version 3.3.0. La structure de répertoire peut être modifiée à mesure que la version change. @Arish
Une autre option consiste à éditer le pom.xml inclus dans la source. Vous pouvez le modifier pour compiler les fichiers de proto sur le cycle de vie de validation et les écrire dans le répertoire source.
Appliquez ce diff ou similaire (ou créez un nouveau profil de construction): P>
$ diff -u ~/Downloads/protobuf-2.6.0/java/pom.xml pom.xml --- /c/Users/MYNAME/Downloads/protobuf-2.6.0/java/pom.xml Mon Aug 25 20:52:36 2014 +++ pom.xml Tue Dec 2 13:51:56 2014 @@ -74,12 +74,12 @@ <executions> <execution> <id>generate-sources</id> - <phase>generate-sources</phase> + <phase>validate</phase> <configuration> <tasks> <mkdir dir="target/generated-sources" /> - <exec executable="../src/protoc"> - <arg value="--java_out=target/generated-sources" /> + <exec executable="protoc"> + <arg value="--java_out=src/main/java" /> <arg value="--proto_path=../src" /> <arg value="../src/google/protobuf/descriptor.proto" /> </exec> @@ -92,12 +92,12 @@ </execution> <execution> <id>generate-test-sources</id> - <phase>generate-test-sources</phase> + <phase>validate</phase> <configuration> <tasks> <mkdir dir="target/generated-test-sources" /> - <exec executable="../src/protoc"> - <arg value="--java_out=target/generated-test-sources" /> + <exec executable="protoc"> + <arg value="--java_out=src/test/java" /> <arg value="--proto_path=../src" /> <arg value="--proto_path=src/test/java" /> <arg value="../src/google/protobuf/unittest.proto" />
https://github.com/google/protobuf/tree/master/java p>
Installation - sans maven p>
Si vous préférez ne pas installer Maven pour construire la bibliothèque, vous pouvez suivre ces instructions à la place. Notez que ces instructions ignorent les tests d'unité exécutées et décrivent uniquement comment installer la bibliothèque Protobuf principale (sans le package UTIL). P>
1) Construisez le code C ++ ou obtenez une distribution binaire de Protoc. Si vous installez une distribution binaire, assurez-vous qu'il s'agit de la même version que ce package. En cas de doute, exécutez: p>
$ Protoc-version Si vous avez construit le code C ++ sans installer, le compilateur binaire doit être situé à ../ src. P>
2) InvoKe Protoc pour construire des descriptorprotos.java: p>
$ Protoc --java_out = noyau / src / main / java -i ../ src \ ../src/google/protobuf/descriptor.Proto 3) Compilez le code dans Core / SRC / Main / Java en utilisant tout ce qui signifie que vous préférez. P>
4) Installez les classes où que vous préfériez. p>
Le README n'aurait vraiment pas pu le rendre plus clair: Vous aurez toujours besoin de télécharger le package de code source afin d'obtenir les bibliothèques Java ou Python Runtime. Obtenez de: Github.com/google/protobuf/relases i>