java - Error de compilación de Maven y Protobuf: no se puede encontrar el símbolo en el paquete com.google.protobuf
maven-2 maven-3 (4)
Soy nuevo en Linux y Protobuf .. Necesito ayuda.
Estoy tratando de "paquete mvn" un proyecto que contiene muchos archivos ".proto", y un archivo pom.xml por supuesto ...
Estoy trabajando en Ubuntu
========================================
ERROR
Cuando ejecuto "paquete mvn", recibo este error:
después
...
Compiling 11 source files to .../target/classes
...
Me sale un montón de estos errores:
[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
Aquí está el archivo pom.xml, con groupId y artifactId eliminado:
<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>
========================================
INSTALACION DE PROTOBUF
hice
./configure
make
make check
make install
en protobuf /,
y
mvn test
mvn install
mvn package
en protobuf / java.
Tomé el frasco en protobuf / java / target
y lo agregué a mi repositorio maven ejecutando:
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
Tenga en cuenta que he perdido el tiempo con $ LD_LIBRARY_PATH Actualmente cuando ejecuto echo it, me sale:
/usr/local/lib/:/usr/:/usr/lib/:/usr/local/
sí ... como pueden ver, no tengo ni idea de cómo configurar $ LD_LIBRARY_PATH
Yo también corrí:
apt-get install protobuf-compiler
========================================
INSTALACION DE PROTOCOS
Olvidé lo que hice para hacer funcionar protoc, pero cuando corro
protoc --version
yo obtengo
libprotoc 2.5.0
========================================
MI PREGUNTA ES SIMILAR A:
Problemas al utilizar protobufs con java y scala.
========================================
¿POSIBLE RELAVENCIA?
Todavía no se encuentra el paquete, después de ''mvn install''
http://www.scriptol.com/programming/protocol-buffers-tutorial.php
¿Alguien puede ayudar?
========================================
PROGRESO
Aparentemente es un fallo del 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:
La protoc --version
debe ser la misma versión establecida en el archivo pom.xml
( protobuf-java-2.5.0.jar
).
Mi problema fue que una unidad probó la clase extendida desde la carpeta principal. Lo resolví con:
<!-- 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>
Tuve este problema cuando había una discrepancia entre la versión de protoc instalada y la versión que aparece en el pom. Coincidir con las versiones solucionó el problema. En mi caso, tuve que cambiar mi versión de protoc a 2.4.1 para que coincida con el POM.
Yo tuve el mismo problema. construyendo las fuentes de protobuf desde google directamente (usé 2.5.0) y haciendo
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
arreglado el problema para mi
En mis ensayos anteriores noté que faltaba el archivo jar en /root/.m2/repository/com/google/protobuf/protobuf-java/2.5.0/.
Tal vez intente usar la versión 2.5.0 en el archivo pom.xml y / o copiando el archivo jar manualmente.
aclamaciones