0

Wenn ein Datenfluß Schablonenbau, die aus Datenspeicher lesen sollte ich die folgenden Fehler in Stackdriver-Protokolle (von Google App Engine):Apache Beam-2.1.0 mit Google DatastoreIO ruft Guava Voraussetzungen checkArgument auf nicht existierende Funktion in GAE

java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;I)V at org.apache.beam.sdk.io.gcp.datastore.DatastoreV1$Read.withQuery(DatastoreV1.java:494) .... my code

Dies geschieht in einer Zeile, in der ein Lesevorgang aus dem Datenspeicher generiert würde. Die pom Abhängigkeit

<!-- https://mvnrepository.com/artifact/org.apache.beam/beam-sdks-java-io-google-cloud-platform --> 
<dependency> 
    <groupId>org.apache.beam</groupId> 
    <artifactId>beam-sdks-java-io-google-cloud-platform</artifactId> 
    <version>2.1.0</version> 
</dependency> 

Referenzen

<!-- https://mvnrepository.com/artifact/com.google.guava/guava --> 
<dependency> 
    <groupId>com.google.guava</groupId> 
    <artifactId>guava</artifactId> 
    <version>20.0</version> 
</dependency> 

Aber diese Version enthält keine Methode checkArgument (String string) in der Klasse Voraussetzungen, noch hat eine andere Version ich sah. Wie oben erwähnt, sollte die Vorlage in einem flexiblen GAE-Umgebungsprojekt erstellt und später ausgeführt werden, die Vorlagengenerierung schlägt jedoch fehl.

Wenn ich eine Hauptfunktion lokal die Vorlage generieren lassen, funktioniert es gut, aber sobald das Projekt in GAE ist, schlägt es fehl. die Abhängigkeit Baum für com.google.guava:

[INFO] xy.company_name.test:bcc.dataflow.project_name:war:0.0.3 
[INFO] \- org.apache.beam:beam-runners-google-cloud-dataflow-java:jar:2.1.0:compile 
[INFO] +- org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:jar:2.1.0:compile 
[INFO] | \- com.google.cloud.bigdataoss:gcsio:jar:1.4.5:compile 
[INFO] |  \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 20.0) 
[INFO] +- org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.1.0:compile 
[INFO] | +- io.grpc:grpc-core:jar:1.2.0:compile 
[INFO] | | \- (com.google.guava:guava:jar:19.0:compile - omitted for conflict with 20.0) 
[INFO] | +- com.google.api:gax-grpc:jar:0.20.0:compile 
[INFO] | | +- io.grpc:grpc-protobuf:jar:1.2.0:compile 
[INFO] | | | +- (com.google.guava:guava:jar:19.0:compile - omitted for duplicate) 
[INFO] | | | \- io.grpc:grpc-protobuf-lite:jar:1.2.0:compile 
[INFO] | | |  \- (com.google.guava:guava:jar:19.0:compile - omitted for duplicate) 
[INFO] | | +- com.google.api:api-common:jar:1.1.0:compile 
[INFO] | | | \- (com.google.guava:guava:jar:19.0:compile - omitted for duplicate) 
[INFO] | | +- (com.google.guava:guava:jar:19.0:compile - omitted for duplicate) 
[INFO] | | \- com.google.api:gax:jar:1.3.1:compile 
[INFO] | |  \- (com.google.guava:guava:jar:19.0:compile - omitted for duplicate) 
[INFO] | +- com.google.cloud:google-cloud-core-grpc:jar:1.2.0:compile 
[INFO] | | +- (com.google.guava:guava:jar:19.0:compile - omitted for duplicate) 
[INFO] | | \- com.google.protobuf:protobuf-java-util:jar:3.2.0:compile 
[INFO] | |  \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 19.0) 
[INFO] | +- com.google.cloud.datastore:datastore-v1-proto-client:jar:1.4.0:compile 
[INFO] | | \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 19.0) 
[INFO] | +- io.grpc:grpc-all:jar:1.2.0:runtime 
[INFO] | | \- io.grpc:grpc-protobuf-nano:jar:1.2.0:runtime 
[INFO] | |  \- (com.google.guava:guava:jar:19.0:runtime - omitted for duplicate) 
[INFO] | +- com.google.cloud:google-cloud-core:jar:1.0.2:compile 
[INFO] | | \- (com.google.guava:guava:jar:19.0:compile - omitted for duplicate) 
[INFO] | +- com.google.cloud.bigtable:bigtable-protos:jar:0.9.7.1:compile 
[INFO] | | \- (com.google.guava:guava:jar:19.0:compile - omitted for duplicate) 
[INFO] | +- com.google.cloud.bigtable:bigtable-client-core:jar:0.9.7.1:compile 
[INFO] | | +- com.google.auth:google-auth-library-appengine:jar:0.6.1:compile 
[INFO] | | | \- (com.google.guava:guava:jar:19.0:compile - omitted for duplicate) 
[INFO] | | \- (com.google.guava:guava:jar:19.0:compile - omitted for duplicate) 
[INFO] | \- com.google.guava:guava:jar:20.0:compile 
[INFO] +- com.google.auth:google-auth-library-oauth2-http:jar:0.7.1:compile 
[INFO] | \- (com.google.guava:guava:jar:19.0:compile - omitted for conflict with 20.0) 
[INFO] \- com.google.cloud.bigdataoss:util:jar:1.4.5:compile 
[INFO]  \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 20.0) 

UPDATE:

beliebigen Eingang hoch

EDIT geschätzt

Nach Hinzufügen von

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>20.0</version> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

Und einer Aktualisierung Funktion Handling DatastoreEntities scheint es wieder zu funktionieren! Sorry für die Mühe, manchmal hilft es nur, das Problem zu strukturieren und Stackoverflow ist eine große Hilfe, dies zu tun.

Antwort

0

Wie angegeben here entspricht das Preconditions.checkArgument(boolean, String, int). Der Z ist ein boolescher Wert und der Ljava/lang/String; ist ein String und der I ist eine ganze Zahl. Diese Methode should exist in Guava 20.0.

+0

Vielen Dank für Ihre Antwort! Irgendwelche Vorschläge, warum die Vorlagengenerierung in Google AppEngine fehlschlägt und nicht lokal? Gibt es eine Möglichkeit zu überprüfen, welche Version in GAE verwendet wird? – user2122552

+0

Aktualisiert die Frage und es scheint, als ob es wieder funktioniert. Danke Ben – user2122552

Verwandte Themen