Я пытаюсь использовать этот код с помощью 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; }
`
Да я тоже считаю этот вопрос причинный по версии несоответствия протокола ptotobuf в моем случае между искрой и Google облачной Client api (тот же самый процесс запускается на том же кластере без искры. К сожалению, с использованием сервиса облачного dataproc Google (для параллельного процесса) классы искры предварительно загружаются из служебного образа. –