2013-03-14 9 views
20

Jestem nowicjuszem dla systemu Linux i Protobuf .. Potrzebuję pomocy.Błąd kompilacji Maven & Protobuf: Nie można znaleźć symbolu w pakiecie com.google.protobuf

Próbuję "pakiet mvn" to projekt, który zawiera wiele plików ".proto", a plik pom.xml oczywiście ...

pracuję na Ubuntu

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

ERROR

Kiedy biegnę "pakiet mvn", otrzymuję ten błąd:

po

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

dostaję sporo tych błędów:

[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

Oto plik pom.xml z GroupID & artifactId wyjęte:

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

zrobiłem

./configure 
make 
make check 
make install 

w protobuf /,

i

mvn test 
mvn install 
mvn package 

w protobuf/java.

Wziąłem słoik Protobuf/JAVA/target

i dodaje go do mojego repo maven uruchamiając:

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 

Zauważ, że mam zawiedli wokół z $ LD_LIBRARY_PATH. Obecnie, gdy uruchomię to echo, otrzymuję:

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

tak ...jak można powiedzieć, że nie mają pojęcia o ustawianiu $ LD_LIBRARY_PATH

wpadłem również:

apt-get install protobuf-compiler 

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

PROTOC INSTALACJA

zapomniałem co zrobiłem, aby prace protoc, ale gdy uruchamiam

protoc --version 

Dostaję

libprotoc 2.5.0 

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

Moje pytanie jest podobny do:

Problems using protobufs with java and scala

maven compilation failure

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

MOŻLIWA WYŻSZA CE?

still not find package, after 'mvn install'

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

Czy ktoś może pomóc?

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

PROGRESS

Najwyraźniej jest to awaria wtyczki:

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 Niezły kompozycja pytań. –

Odpowiedz

11

miałem ten sam problem. budowy źródeł Protobuf bezpośrednio od Google (użyłem 2.5.0) i robi

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 

rozwiązaniu problemu dla mnie.

W moich wcześniejszych próbach zauważyłem, że brakuje pliku jar w /root/.m2/repository/com/google/protobuf/protobuf-java/2.5.0/.

Być może spróbuj użyć wersji 2.5.0 w pom.xml i/lub ręcznie skopiuj plik jar.

okrzyki

+5

Yup! Zmienia się wersja 2.4.1 do wersji 2.5.0! Dziękuję Ci! – Kayvar

+0

Zmiana 2.4.1 do 2.5.0 w pom pom rozwiązała również mój problem – gnielsen

8

miałem ten problem, kiedy nie było niedopasowanie pomiędzy zainstalowanej wersji protoc i wersji wymienionych w pom. Dopasowanie wersji naprawiło problem. W moim przypadku musiałem zmienić wersję protokołu z powrotem na 2.4.1, aby dopasować POM.

8

Wersja protoc --version musi być w tej samej wersji, co w pliku pom.xml (protobuf-java-2.5.0.jar).

+0

To było dla mnie najprostsze rozwiązanie! – santon

+0

fajnie, dziękuję. – idmitriev

1

Mój problem polegał na tym, że jedna jednostka testowała rozszerzoną klasę z głównego folderu. Rozwiązałem go za pomocą:

<!-- 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> 
Powiązane problemy