1

Я пытаюсь использовать этот код с помощью Google Cloud Datastore:Как переопределить метод в uber jar?

Query<Entity> query = Query.entityQueryBuilder() 
    .kind("Task") 
    .filter(PropertyFilter.hasAncestor(
     datastore.newKeyFactory().kind("TaskList").newKey("default"))) 
    .build(); 
datastore.run(query, ReadOption.eventualConsistency()); 

Я получаю эту ошибку:

Exception in thread "main" java.lang.VerifyError: class com.google.datastore.v1.ReadOptions$Builder overrides final method mergeUnknownFields.(Lcom/google/protobuf/UnknownFieldSet;)Lcom/google/protobuf/GeneratedMessage$Builder; at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at com.google.datastore.v1.ReadOptions.toBuilder(ReadOptions.java:392) at com.google.datastore.v1.ReadOptions.newBuilder(ReadOptions.java:386) at com.google.cloud.datastore.DatastoreImpl.toReadOptionsPb(DatastoreImpl.java:217) at com.google.cloud.datastore.DatastoreImpl.run(DatastoreImpl.java:78)

Некоторые общие данные:

  • Язык: SCALA
  • Run on: Google вычислить двигатель
  • Использование com.goog le.guava: гуава: 19,0 и com.google.cloud:google-cloud:0.3.0 зависимости
  • Это код из google.datastore.v1.protos

    общественность окончательного Builder mergeUnknownFields ( окончательного ком .google.protobuf.UnknownFieldSet unknownFields) { верните это; }

  • это код из com.google.protobuf.GeneratedMessage

    public BuilderType mergeUnknownFields(UnknownFieldSet unknownFields) { 
        this.unknownFields = UnknownFieldSet.newBuilder(this.unknownFields).mergeFrom(unknownFields).build(); 
        this.onChanged(); 
        return this; 
    } 
    

`

ответ

0

Я считаю, что это симптом проблем, описанных в this issue.

+0

Да я тоже считаю этот вопрос причинный по версии несоответствия протокола ptotobuf в моем случае между искрой и Google облачной Client api (тот же самый процесс запускается на том же кластере без искры. К сожалению, с использованием сервиса облачного dataproc Google (для параллельного процесса) классы искры предварительно загружаются из служебного образа. –

1

Добавление затушеванные зависимости решена/Google облака клиента проблема апите конфликт искровой с помощью:

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>2.4.3</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
        <configuration> 
         <relocations> 
          <relocation> 
           <pattern>com.google</pattern> 
           <shadedPattern>shaded.com.google</shadedPattern> 
          </relocation> 
         </relocations> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
Смежные вопросы