web-dev-qa-db-ja.com

Maven&Protobufコンパイルエラー:パッケージcom.google.protobufにシンボルが見つかりません

LinuxとProtobufは初めてです。助けが必要です。

もちろん、多くの「.proto」ファイルとpom.xmlファイルを含むプロジェクトを「mvnパッケージ」にしようとしています...

私は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でjarを受け取りました

次のコマンドを実行して、それを私の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をいじったことに注意してください。現在、echo itを実行すると、次のようになります。

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

ええと…あなたが言うことができるように、私は$ LD_LIBRARY_PATHを設定することについての手がかりを持っていません

私も走った:

apt-get install protobuf-compiler

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

プロトコルのインストール

Protocを動作させるために何をしたかを忘れましたが、実行すると

protoc --version

私は得る

libprotoc 2.5.0

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

私の質問IS類似:

Javaおよびscala)でprotobufsを使用するときの問題

mavenコンパイルの失敗

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

可能な関連性?

'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:
23
Katie

私も同じ問題を抱えていました。グーグルから直接protobufソースを構築し(私は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

私のために問題を修正しました。

私が気付いた以前のトライアルでは、/ root/.m2/repository/com/google/protobuf/protobuf-Java/2.5.0 /のjarファイルが見つからないことに気付きました。

多分pom.xmlでバージョン2.5.0を使用するか、jarファイルを手動でコピーしてみてください。

乾杯

13
thesonix

インストールされているプロトコルのバージョンとpomにリストされているバージョンの間に不一致がある場合、この問題が発生しました。バージョンを一致させることで問題が修正されました。私の場合、POMに合わせるために、プロトコルバージョンを2.4.1に戻す必要がありました。

11
Nathan

protoc --versionは、pom.xmlファイル(protobuf-Java-2.5.0.jar)で設定したものと同じバージョンである必要があります。

9
delijati

私にとっては、ビルドスクリプトで以下を使用した後に解決されます

<clearOutputDirectory>false</clearOutputDirectory

完全なビルドスクリプト

<build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.5.0.Final</version>
            </extension>
        </extensions>
        <plugins>
            <plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
                <version>0.5.1</version>
                <configuration>
                    <protocArtifact>com.google.protobuf:protoc:3.6.1:exe:${os.detected.classifier}</protocArtifact>
                    <pluginId>grpc-Java</pluginId>
                    <pluginArtifact>io.grpc:protoc-gen-grpc-Java:1.19.0:exe:${os.detected.classifier}</pluginArtifact>
                    <clearOutputDirectory>false</clearOutputDirectory>
                    <outputDirectory>${basedir}/src/main/Java/</outputDirectory>

                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>compile-custom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
1
Amar Tanwar

私の問題は、メインフォルダーからの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>
1
Valdis Vitolins