IncompatibleClassChangeError: class com.google.protobuf.Descriptors$OneofDescriptor Protobuf

460 Views Asked by At

I have been getting

at clojure.lang.Compiler.analyzeSeq(Compiler.java:7114)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7094)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyze(Compiler.java:6745)
    at clojure.lang.Compiler$HostExpr$Parser.parse(Compiler.java:986)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7106)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7094)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyze(Compiler.java:6745)
    at clojure.lang.Compiler$HostExpr$Parser.parse(Compiler.java:986)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7106)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7094)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyze(Compiler.java:6745)
    at clojure.lang.Compiler$HostExpr$Parser.parse(Compiler.java:986)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7106)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7094)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyze(Compiler.java:6745)
    at clojure.lang.Compiler$HostExpr$Parser.parse(Compiler.java:986)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7106)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7094)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7094)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyze(Compiler.java:6745)
    at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6120)
    at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5467)
    at clojure.lang.Compiler$FnExpr.parse(Compiler.java:4029)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7104)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7094)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.access$300(Compiler.java:38)
    at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:596)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7106)
    at clojure.lang.Compiler.analyze(Compiler.java:6789)
    at clojure.lang.Compiler.analyze(Compiler.java:6745)
    at clojure.lang.Compiler.eval(Compiler.java:7180)
    at clojure.lang.Compiler.load(Compiler.java:7635)
    at clojure.lang.RT.loadResourceScript(RT.java:381)
    at clojure.lang.RT.loadResourceScript(RT.java:372)
    at clojure.lang.RT.load(RT.java:463)
    at clojure.lang.RT.load(RT.java:428)
    at clojure.core$load$fn__6824.invoke(core.clj:6126)
    at clojure.core$load.invokeStatic(core.clj:6125)
    at clojure.core$load.doInvoke(core.clj:6109)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invokeStatic(core.clj:5908)
    at clojure.core$load_one.invoke(core.clj:5903)
    at clojure.core$load_lib$fn__6765.invoke(core.clj:5948)
    at clojure.core$load_lib.invokeStatic(core.clj:5947)
    at clojure.core$load_lib.doInvoke(core.clj:5928)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invokeStatic(core.clj:667)
    at clojure.core$load_libs.invokeStatic(core.clj:5985)
    at clojure.core$load_libs.doInvoke(core.clj:5969)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invokeStatic(core.clj:667)
    at clojure.core$require.invokeStatic(core.clj:6007)
    at clojure.core$require.doInvoke(core.clj:6007)
    at clojure.lang.RestFn.invoke(RestFn.java:436)
    at nearby_driver_service.octopus_test$eval422$loading__6706__auto____423.invoke(octopus_test.clj:1)
    at nearby_driver_service.octopus_test$eval422.invokeStatic(octopus_test.clj:1)
    at nearby_driver_service.octopus_test$eval422.invoke(octopus_test.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:7176)
    at clojure.lang.Compiler.eval(Compiler.java:7165)
    at clojure.lang.Compiler.load(Compiler.java:7635)
    at clojure.lang.RT.loadResourceScript(RT.java:381)
    at clojure.lang.RT.loadResourceScript(RT.java:372)
    at clojure.lang.RT.load(RT.java:463)
    at clojure.lang.RT.load(RT.java:428)
    at clojure.core$load$fn__6824.invoke(core.clj:6126)
    at clojure.core$load.invokeStatic(core.clj:6125)
    at clojure.core$load.doInvoke(core.clj:6109)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invokeStatic(core.clj:5908)
    at clojure.core$load_one.invoke(core.clj:5903)
    at clojure.core$load_lib$fn__6765.invoke(core.clj:5948)
    at clojure.core$load_lib.invokeStatic(core.clj:5947)
    at clojure.core$load_lib.doInvoke(core.clj:5928)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invokeStatic(core.clj:667)
    at clojure.core$load_libs.invokeStatic(core.clj:5985)
    at clojure.core$load_libs.doInvoke(core.clj:5969)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invokeStatic(core.clj:667)
    at clojure.core$require.invokeStatic(core.clj:6007)
    at clojure.core$require.doInvoke(core.clj:6007)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invokeStatic(core.clj:665)
    at clojure.core$apply.invoke(core.clj:660)
    at user$eval224.invokeStatic(form-init3326873477142158964.clj:1)
    at user$eval224.invoke(form-init3326873477142158964.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:7176)
    at clojure.lang.Compiler.eval(Compiler.java:7166)
    at clojure.lang.Compiler.load(Compiler.java:7635)
    at clojure.lang.Compiler.loadFile(Compiler.java:7573)
    at clojure.main$load_script.invokeStatic(main.clj:452)
    at clojure.main$init_opt.invokeStatic(main.clj:454)
    at clojure.main$init_opt.invoke(main.clj:454)
    at clojure.main$initialize.invokeStatic(main.clj:485)
    at clojure.main$null_opt.invokeStatic(main.clj:519)
    at clojure.main$null_opt.invoke(main.clj:516)
    at clojure.main$main.invokeStatic(main.clj:598)
    at clojure.main$main.doInvoke(main.clj:561)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.lang.Var.applyTo(Var.java:705)
    at clojure.main.main(main.java:37)
Caused by: java.lang.IncompatibleClassChangeError: class com.google.protobuf.Descriptors$OneofDescriptor has interface com.google.protobuf.Descriptors$GenericDescriptor as super class
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetPublicMethods(Class.java:2902)
    at java.lang.Class.privateGetPublicMethods(Class.java:2917)
    at java.lang.Class.getMethods(Class.java:1615)
    at clojure.lang.Reflector.getMethods(Reflector.java:498)
    at clojure.lang.Compiler$HostExpr$Parser.parse(Compiler.java:994)
    at clojure.lang.Compiler.analyzeSeq(Compiler.java:7106)
    ... 113 more

exception when I am trying to add [com.google.protobuf/protobuf-java "3.21.2"] as dependency in my clojure code. Reason being I was using older version of protobuf (<3.8) & I faced this issue I fixed it using the solution but now I have started getting IncompativleClassChangeError. I understand & have some instinct that this is related to some dependency code but somehow am not able to figure out which changes in dependency could avoid this. currently my project.clj looks like:

  [io.grpc/grpc-netty "1.45.1"]
  [io.grpc/grpc-netty-shaded "1.45.1"]
  [io.grpc/grpc-protobuf "1.45.1"]
  [io.grpc/grpc-stub "1.45.1"]
  [com.google.protobuf/protobuf-java "3.21.2"]

client.clj

;;; client
(def client (clojuregrpcexample.grpc.HelloGrpc/newBlockingStub
               (-> (io.grpc.ManagedChannelBuilder/forAddress "localhost" (int 35000))
                   (.usePlaintext true)
                   .build)))
    

(defn say-hello [name]
  (println 
   (.getGreeting
    (.sayHello client (-> (clojuregrpcexample.grpc.GrpcExample$Person/newBuilder)
                                   (.setName name)
                                   .build)))))  

Any hints to remove this issue would be helpful!

Edit

  • updated the complete stack trace
  • Adding sample code for grpc client call
0

There are 0 best solutions below