Maven & Protobuf erreur de compilation: impossible de trouver le symbole dans le paquet com.Google.protobuf
Je suis nouveau sous Linux et Protobuf.. J'ai besoin d'aide.
j'essaie de" mvn package "un projet qui en contient beaucoup".proto" les fichiers, et un pom.fichier xml de cours...
je travaille sur Ubuntu
=======================================
ERROR
quand j'exécute "mvn package", 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]
=======================================
POM
voici le pom.fichier xml, avec groupId & artifactId sorti:
<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>
=======================================
PROTOBUF INSTALLATION
j'ai fait
./configure
make
make check
make install
dans protobuf/,
et
mvn test
mvn install
mvn package
dans protobuf/java.
j'ai pris le pot dans protobuf/java/cible
et l'a ajouté à mon Maven repo 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 trafiqué avec $LD_LIBRARY_PATH. Actuellement, Quand je lance echo it, je reçois:
/usr/local/lib/:/usr/:/usr/lib/:/usr/local/
Oui.... comme vous pouvez le dire je n'ai pas la moindre idée sur la configuration $ LD_LIBRARY_PATH
j'ai aussi couru:
apt-get install protobuf-compiler
=======================================
PROTOCOLE INSTALLATION
j'ai oublié ce que j'ai fait pour faire fonctionner le Protocole, Mais quand je cours
protoc --version
je reçois
libprotoc 2.5.0
=======================================
MA QUESTION EST SIMILAIRE À:
Problèmes à l'aide de protobufs avec java et scala
=======================================
POSSIBLE RELAVENCE?
pas encore de trouver le paquet, après "mvn install'
http://www.scriptol.com/programming/protocol-buffers-tutorial.php
est-ce que quelqu'un peut aider?
=======================================
PROGRESS
apparemment c'est un échec de 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:
4 réponses
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
a réglé le problème pour moi.
Dans mes premiers essais, j'ai remarqué que le pot-fichier /root/.m2/repository/com/google/protobuf/protobuf-java/ 2.5.0 / manquait.
Peut-être essayer d'utiliser la version 2.5.0 dans le pom.xml et / ou copie manuelle du fichier jarfile.
cheers
j'ai eu ce problème quand il y avait un décalage entre la version du protocole installée et la version listée dans le pom. L'appariement des versions a résolu le problème. Dans mon cas, j'ai dû revenir à ma version de protocole 2.4.1 Pour correspondre au POM.
Le protoc --version
doit être la même version de 151910920" fichier ( protobuf-java-2.5.0.jar
).
mon problème était qu'un test unitaire étendait la classe 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>