Подтвердить что ты не робот

Ошибка компиляции Maven & Protobuf: не удается найти символ в пакете com.google.protobuf

Я новичок в Linux и Protobuf. Мне нужна помощь.

Я пытаюсь "mvn package" проекта, который содержит много файлов ".proto", и файл pom.xml, конечно...

Я работаю над Ubuntu

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

Ошибка

Когда я запускаю "mvn package", я получаю эту ошибку:

после

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

Вот файл pom.xml с выведенным groupId и 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/java.

Я взял банку в protobuf/java/target

и добавили его в мой maven repo, выполнив:

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

Я получаю

libprotoc 2.5.0

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

МОЙ ВОПРОС ОБОБЩЕН:

Проблемы с использованием protobufs с java и scala

Ошибка компиляции maven

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

ВОЗМОЖНАЯ ДОЛЖНОСТЬ?

все еще не найти пакет, после 'mvn install'

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

Может ли кто-нибудь помочь?

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

PROGRESS

По-видимому, это сбой плагина:

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:
4b9b3361

Ответ 1

У меня была та же проблема. строит источники protobuf из google напрямую (я использовал 2.5.0) и делаю

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

исправил проблему для меня.

В моих предыдущих испытаниях я заметил, что отсутствует jar файл в файле /root/.m2/repository/com/google/protobuf/protobuf-java/2.5.0/.

Возможно, попробуйте использовать версию 2.5.0 в файле pom.xml и/или скопировать файл jarfile вручную.

веселит

Ответ 2

У меня возникла эта проблема, когда произошла несоответствие между установленной проточной версией и версией, указанной в pom. Соответствие версий устранило проблему. В моем случае мне пришлось переключить свою версию protoc на 2.4.1, чтобы соответствовать POM.

Ответ 3

protoc --version должна быть той же версии, что и в файле pom.xml (protobuf-java-2.5.0.jar).

Ответ 4

Моя проблема заключалась в том, что один расширенный класс unit test из основной папки. Я решил это с помощью:

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