2016-10-13 10 views
0

Google PubSubサブスクリプションからメッセージを引き出し、メッセージからGoogle Cloud Storageの画像の場所を抽出し、Google Cloud Visionに画像。私はPubSubを単独で機能させ、Cloud Visionコンポーネントを単独で機能させることができました。私はそれらを一緒に実行しようとすると、しかし、私は次のエラーを取得する:同じプロジェクト内のGoogle PubSubとGoogle Cloud Visionとの競合

java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:294) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NoSuchMethodError: com.google.common.util.concurrent.Futures.catching(Lcom/google/common/util/concurrent/ListenableFuture;Ljava/lang/Class;Lcom/google/common/base/Function;)Lcom/google/common/util/concurrent/ListenableFuture; 
    at com.google.cloud.pubsub.spi.DefaultPubSubRpc.translate(DefaultPubSubRpc.java:168) 
    at com.google.cloud.pubsub.spi.DefaultPubSubRpc.pull(DefaultPubSubRpc.java:251) 
    at com.google.cloud.pubsub.PubSubImpl.pullAsync(PubSubImpl.java:491) 
    at com.google.cloud.pubsub.PubSubImpl.pull(PubSubImpl.java:481) 
    at xyz.wingman.face_image.GoogleVision.main(GoogleVision.java:68) 
    ... 6 more 

これは、これは上に起こった第二のプロジェクトです。最初はPubSubとFirebaseの間で同様の競合がありました。私の研究に基づいて、グアバのバージョンで推移依存性の競合ように見えますが、私は(それが実際に原因である場合)、この競合を避けるためにpom.xmlの構造にどのように立ち往生しています:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.skroot.image_face</groupId> 
    <artifactId>gcloud-test</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>gcloud-test</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.5.0</version> 
     <configuration> 
      <mainClass>com.skroot.image_face.GoogleVision</mainClass> 
     </configuration> 
     </plugin> 
     <plugin> 
     <!-- Build an executable JAR --> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>3.0.2</version> 
     <configuration> 
      <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
       <classpathPrefix>lib/</classpathPrefix> 
       <mainClass>com.skroot.image_face.GoogleVision</mainClass> 
      </manifest> 
      </archive> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

    <dependencies> 
    <!-- https://mvnrepository.com/artifact/com.google.cloud.dataflow/google-cloud-dataflow-java-sdk-all --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.google.protobuf</groupId> 
     <artifactId>protobuf-java-util</artifactId> 
     <version>3.0.2</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.cloud.dataflow</groupId> 
     <artifactId>google-cloud-dataflow-java-sdk-all</artifactId> 
     <version>1.8.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hamcrest</groupId> 
     <artifactId>hamcrest-all</artifactId> 
     <version>1.3</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.skroot</groupId> 
     <artifactId>image_face</artifactId> 
     <version>0.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.cloud</groupId> 
     <artifactId>google-cloud</artifactId> 
     <version>0.3.0</version> 
     <exclusions> 
     <exclusion> 
      <groupId>io.netty</groupId> 
      <artifactId>netty-codec-http2</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>io.grpc</groupId> 
      <artifactId>grpc-core</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>com.google.cloud</groupId> 
     <artifactId>google-cloud-pubsub</artifactId> 
     <version>0.3.0</version> 
     <exclusions> 
     <exclusion> 
      <groupId>io.netty</groupId> 
      <artifactId>netty-codec-http2</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>io.grpc</groupId> 
      <artifactId>grpc-core</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>com.google.api-client</groupId> 
     <artifactId>google-api-client</artifactId> 
     <version>1.22.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.apis</groupId> 
     <artifactId>google-api-services-vision</artifactId> 
     <version>v1-rev25-1.22.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.protobuf</groupId> 
     <artifactId>protobuf-java</artifactId> 
     <version>3.0.2</version> 
    </dependency> 
    </dependencies> 
</project> 

答えて

0

私がすることによってこれを解決しましたpom.xmlにグローバル除外を追加します(com.google.guava/guava-jdk5は除きます)。

関連する問題