Je suis nouveau sur Linux et Protobuf .. J'ai besoin d'aide.
J'essaie de "mvn package" un projet qui contient de nombreux fichiers ".proto", et un fichier pom.xml bien sûr ...
Je travaille sur Ubuntu
=======================================
Lorsque j'exécute "package mvn", je reçois cette erreur:
après
...
Compiling 11 source files to .../target/classes
...
Je reçois un tas de ces erreurs:
[ERROR] .../target/generated-sources/...Java:[16457,30] cannot find symbol
[ERROR] symbol : class Parser
[ERROR] location: package com.google.protobuf
[ERROR]
[ERROR] .../target/generated-sources/...Java:[17154,37] cannot find symbol
[ERROR] symbol : class Parser
[ERROR] location: package com.google.protobuf
[ERROR]
[ERROR] .../target/generated-sources/...Java:[17165,30] cannot find symbol
[ERROR] symbol : class Parser
[ERROR] location: package com.google.protobuf
[ERROR]
[ERROR] .../target/generated-sources/...Java:[17909,37] cannot find symbol
[ERROR] symbol : class Parser
[ERROR] location: package com.google.protobuf
[ERROR]
=======================================
Voici le fichier pom.xml, avec groupId & artifactId retiré:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>*****</groupId>
<artifactId>*****</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>*****</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<proto.cas.path>${project.basedir}/src</proto.cas.path>
<target.gen.source.path>${project.basedir}/target/generated-sources</target.gen.source.path>
</properties>
<dependencies>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-Java</artifactId>
<version>2.4.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>${project.basedir}/src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<includes><include>**/commonapps/**</include></includes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<tasks>
<mkdir dir="${target.gen.source.path}" />
<path id="proto.path.files">
<fileset dir="${proto.cas.path}">
<include name="*.proto" />
</fileset>
</path>
<pathconvert pathsep=" " property="proto.files" refid="proto.path.files" />
<exec executable="protoc">
<arg value="--Java_out=${target.gen.source.path}" />
<arg value="--proto_path=${proto.cas.path}" />
<arg line="${proto.files}" />
</exec>
</tasks>
<sourceRoot>${target.gen.source.path}</sourceRoot>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
=======================================
J'ai fait
./configure
make
make check
make install
en protobuf /,
et
mvn test
mvn install
mvn package
dans protobuf/Java.
J'ai pris le pot dans protobuf/Java/target
et l'a ajouté à mon référentiel maven en exécutant:
mvn install:install-file -Dpackaging=jar -DgeneratePom=true -DgroupId=com.google.protobuf -DartifactId=protobuf-Java -Dfile=protobuf-Java-2.4.1.jar -Dversion=2.4.1
Notez que j'ai dérangé avec $ LD_LIBRARY_PATH. Actuellement, lorsque je lance l'écho, j'obtiens:
/usr/local/lib/:/usr/:/usr/lib/:/usr/local/
ouais .... comme vous pouvez le voir, je n'ai aucune idée de la configuration de $ LD_LIBRARY_PATH
J'ai également couru:
apt-get install protobuf-compiler
=======================================
J'ai oublié ce que j'ai fait pour que le protocole fonctionne, mais quand je cours
protoc --version
Je reçois
libprotoc 2.5.0
=======================================
Problèmes d'utilisation de protobufs avec Java et scala
=======================================
toujours pas trouvé de package, après 'mvn install'
http://www.scriptol.com/programming/protocol-buffers-tutorial.php
Quelqu'un peut-il aider?
=======================================
Apparemment, c'est un échec du plugin:
https://cwiki.Apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project casprotobuf: Compilation failure: Compilation failure:
J'ai eu le même problème. construire les sources de protobuf de google directement (j'ai utilisé 2.5.0) et faire
mvn install:install-file -Dpackaging=jar -DgeneratePom=true -DgroupId=com.google.protobuf -DartifactId=protobuf-Java -Dfile=protobuf-Java-2.5.0.jar -Dversion=2.5.0
résolu le problème pour moi.
Lors de mes précédents essais, j'ai remarqué que le fichier jar dans /root/.m2/repository/com/google/protobuf/protobuf-Java/2.5.0/ était manquant.
Essayez peut-être d'utiliser la version 2.5.0 dans le fichier pom.xml et/ou de copier le fichier jar manuellement.
à votre santé
J'ai eu ce problème quand il y avait un décalage entre la version de protocole installée et la version répertoriée dans le pom. La correspondance des versions a résolu le problème. Dans mon cas, j'ai dû changer ma version de protocole en 2.4.1 pour correspondre au POM.
Le protoc --version
doit être la même version que celle définie dans pom.xml
fichier (protobuf-Java-2.5.0.jar
).
Pour moi, il est résolu après avoir utilisé ci-dessous dans le script de construction
<clearOutputDirectory>false</clearOutputDirectory
Script de construction complet
<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.5.0.Final</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.5.1</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.6.1:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-Java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-Java:1.19.0:exe:${os.detected.classifier}</pluginArtifact>
<clearOutputDirectory>false</clearOutputDirectory>
<outputDirectory>${basedir}/src/main/Java/</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Mon problème était qu'une classe étendue de test unitaire du dossier principal. Je l'ai résolu avec:
<!-- Allow tests to call classes in main folder -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/test/Java</source>
<source>src/main/Java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>