2013-03-14 6 views
20

Ich bin neu bei Linux und Protobuf .. Ich brauche Hilfe.Maven & Protobuf Kompilierfehler: Kann das Symbol nicht im Paket finden com.google.protobuf

Ich versuche, „mvn-Paket“ ein Projekt, das viele „Proto“ Dateien und eine pom.xml Datei enthält natürlich ...

Ich arbeite an Ubuntu

= ======================================

ERROR

Wenn ich laufen "mvn package", ich erhalte diesen Fehler:

nach

... 
Compiling 11 source files to .../target/classes 
... 

ich ein paar dieser Fehler:

[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

Hier wird die pom.xml Datei, mit groupId & artifactId entnommen:

<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

ich habe

getan
./configure 
make 
make check 
make install 

in protobuf /,

und

mvn test 
mvn install 
mvn package 

in Protobuf/Java.

nahm ich das Glas in protobuf/java/Ziel

und fügte hinzu, es Repo meines Maven durch Ausführen von:

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 

Bitte beachte, dass ich um mit $ LD_LIBRARY_PATH versaut habe. Zur Zeit, als ich echo es laufen, erhalte ich:

/usr/local/lib/:/usr/:/usr/lib/:/usr/local/ 

ja ....wie Sie sagen, kann ich keine Ahnung über $ LD_LIBRARY_PATH Einstellung

Ich lief auch:

apt-get install protobuf-compiler 

==================== ===================

Protoc INSTALLATION

ich habe vergessen, was ich tat Protoc Arbeit zu machen, aber wenn ich laufe

protoc --version 

Ich bekomme

libprotoc 2.5.0 

=======================================

Meine Frage ist ähnlich:

Problems using protobufs with java and scala

maven compilation failure

============================== =========

MÖGLICHERWEISE RELAVEN CE?

still not find package, after 'mvn install'

http://www.scriptol.com/programming/protocol-buffers-tutorial.php

Kann jemand helfen?

=======================================

PROGRESS

Offenbar ist es ein Plugin failure:

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

+1 Schöne Frage Zusammensetzung. –

Antwort

11

ich hatte das gleiche Problem. die protobuf Quellen von Google direkt Aufbau (I verwendet 2.5.0) und tun

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 

das Problem für mich fixiert.

In meinen früheren Versuchen habe ich festgestellt, dass die JAR-Datei in /root/.m2/repository/com/google/protobuf/protobuf-java/2.5.0/ fehlte.

Vielleicht versuchen Sie, Version 2.5.0 in der pom.xml zu verwenden und/oder die JAR-Datei manuell zu kopieren.

prost

+5

Yup! Ändern von 2.4.1 zu 2.5.0 hat funktioniert! Vielen Dank! – Kayvar

+0

Das Ändern von 2.4.1 auf 2.5.0 in meinem Pom löste auch mein Problem – gnielsen

8

Ich hatte dieses Problem, wenn eine Diskrepanz zwischen der Protoc Version installiert und die Version in der pom aufgeführt war. Die Übereinstimmung der Versionen behob das Problem. In meinem Fall musste ich meine Protokollversion zurück auf 2.4.1 umstellen, damit sie mit dem POM übereinstimmt.

8

Die protoc --version hat die gleiche Version sein, wie sie in pom.xml Datei (protobuf-java-2.5.0.jar).

+0

Das war die einfachste Lösung für mich! – santon

+0

cool, danke. – idmitriev

1

Mein Problem war, dass eine Einheit Test erweiterte Klasse aus dem Hauptordner. Ich löste es mit:

<!-- 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>