2013-03-14 9 views
20

में प्रतीक नहीं मिल रहा है मैं लिनक्स और प्रोटोबफ के लिए नया हूं .. मुझे मदद चाहिए।मेवेन और प्रोटोबफ संकलन त्रुटि: पैकेज com.google.protobuf

मैं कोशिश कर रहा हूँ "mvn पैकेज" एक परियोजना है कि कई ".proto" फ़ाइलें हैं, और निश्चित रूप से एक pom.xml फ़ाइल ...

मैं उबंटू

पर काम कर रहा हूँ करने के लिए = ======================================

त्रुटि

जब मैं चलाने "एमवीएन पैकेज", मुझे यह त्रुटि मिलती है:

के बाद
... 
Compiling 11 source files to .../target/classes 
... 

मैं इन त्रुटियों की एक गुच्छा मिलता है:

[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.xml फ़ाइल, ग्रुप & artifactId साथ बाहर ले जाया जाता है:

<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 इंस्टालेशन

मैं

./configure 
make 
make check 
make install 
Protobuf/में

किया है,

और

mvn test 
mvn install 
mvn package 
प्रोटोबफ/जावा में।

मैं Protobuf/जावा/लक्ष्य

में जार ले लिया और मेरे Maven रेपो के लिए इसे चलाकर कहा:

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 

ध्यान दें कि मैं $ LD_LIBRARY_PATH के साथ चारों ओर उलझ गए हैं। वर्तमान में जब मैं इसे गूंजता हूं, तो मुझे मिलता है:

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

हाँ ....जैसा कि आप बता सकते हैं मैं $ LD_LIBRARY_PATH

स्थापना के बारे में एक सुराग नहीं है मैं भी भाग गया:

apt-get install protobuf-compiler 

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

pROTOC इंस्टालेशन

मैं भूल गया था कि मैं क्या protoc काम करने के लिए किया था, लेकिन जब मैं चलाने

protoc --version 

मुझेमिलते हैं

libprotoc 2.5.0 

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

मेरे सवाल के समान है:

Problems using protobufs with java and scala

maven compilation failure

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

संभावित रिलीज सीई?

still not find package, after 'mvn install'

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

किसी को भी मदद कर सकते हैं?

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

प्रगति

जाहिर है यह एक प्लगइन विफलता है:

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 अच्छी प्रश्न संरचना। –

उत्तर

11

मैं एक ही समस्या थी। गूगल से Protobuf स्रोतों के निर्माण सीधे और कर

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 

मेरे लिए समस्या तय (मैं 2.5.0 प्रयुक्त)।

मेरे पिछले परीक्षणों में मैंने देखा कि, /root/.m2/repository/com/google/protobuf/protobuf-java/2.5.0/ में जार-फ़ाइल गायब थी।

शायद pom.xml में संस्करण 2.5.0 और/या मैनफाइल मैन्युअल रूप से प्रतिलिपि बनाने का प्रयास करें।

चियर्स

+5

यूप! 2.4.1 से 2.5.0 बदलना काम किया! धन्यवाद! – Kayvar

+0

मेरे पोम में 2.4.1 से 2.5.0 बदलकर मेरी समस्या हल हो गई है – gnielsen

8

मैं इस समस्या थी जब वहाँ protoc संस्करण स्थापित और पोम में सूचीबद्ध संस्करण के बीच एक बेमेल थी। संस्करणों को मिलान करने से समस्या ठीक हो गई। मेरे मामले में, मुझे पीओएम से मेल खाने के लिए अपने प्रोटोक संस्करण को 2.4.1 पर स्विच करना पड़ा।

8

protoc --versionpom.xml फ़ाइल (protobuf-java-2.5.0.jar) में सेट के समान संस्करण होना चाहिए।

+0

यह मेरे लिए सबसे आसान समाधान था! – santon

+0

शांत, धन्यवाद। – idmitriev

1

मेरी समस्या यह थी कि एक इकाई परीक्षण मुख्य फ़ोल्डर से कक्षा बढ़ाया गया। मैंने इसे हल किया:

<!-- 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> 
संबंधित मुद्दे