0

Lors de la construction d'un modèle de flux de données qui devrait lire datastore j'obtenir l'erreur suivante dans les journaux de Stackdriver (Google App Engine):Apache faisceau 2.1.0 avec Google appelle DatastoreIO Goyave Préalables checkArgument sur la fonction non-existante dans 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

Cela se produit dans une ligne où une lecture de Datastore serait générée. La dépendance pom

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

Références

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

Mais cette version ne contient pas une méthode checkArgument (chaîne String) en classe Préalables, ni ne toute autre version que je regardais. Comme mentionné ci-dessus, le modèle doit être construit dans un projet d'environnement flexible GAE et exécuté plus tard, mais la génération du modèle échoue.

Si je laisse une fonction principale générer le modèle localement, cela fonctionne correctement, mais dès que le projet est en GAE, il échoue.

Toute entrée est très apprécié

EDIT: l'arbre de dépendance pour 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) 

MISE À JOUR:

après l'ajout

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

et mettre à jour un fonction de gestion DatastoreEntities il semble fonctionner à nouveau! Désolé de déranger, parfois cela aide simplement à structurer le problème et stackoverflow est une aide précieuse pour le faire.

Répondre

0

Comme il est indiqué here qui correspond à Preconditions.checkArgument(boolean, String, int). Le Z est une valeur booléenne, et la Ljava/lang/String; est une chaîne, et le I est un nombre entier. Cette méthode should exist in Guava 20.0.

+0

Merci pour votre réponse! Des suggestions pour expliquer pourquoi la génération de modèle échoue dans Google App Engine et n'est pas disponible localement? Existe-t-il un moyen de vérifier quelle version est utilisée dans GAE? – user2122552

+0

Mis à jour la question et il semble que cela fonctionne à nouveau. Merci Ben – user2122552