Thanks Till.  Making the scala version consistent using 2.11 solved the
ClassNotFoundException.

On Tue, Sep 29, 2020 at 11:58 PM Till Rohrmann <trohrm...@apache.org> wrote:

> Hi Lian,
>
> I suspect that it is caused by an incompatible Akka version. Flink uses
> Akka 2.5.21 instead of 2.5.12. Moreover, you are mixing Flink jars which
> use Scala 2.11 with Akka dependencies which are built against Scala 2.12.
>
> I am not an Gradle expert but can't Gradle simply pull in the transitive
> dependencies of flink-runtime?
>
> Cheers,
> Till
>
> On Wed, Sep 30, 2020 at 2:22 AM Lian Jiang <jiangok2...@gmail.com> wrote:
>
>> Hi,
>>
>> I use Flink source master to build a snapshot and use the jars in my
>> project. The goal is to avoid hacky deserialization code caused by avro 1.8
>> in old Flink versions since Flink 1.12 uses avro 1.10. Unfortunately, the
>> code throws below ClassNotFoundException. I have verified that the
>> akka-actor jar 2.5.12 is available and specified in -classpath. I can even
>> create an object using akka/serialization/NullSerializer class in my
>> application, indicating there is no problem for this app to use any class
>> under namespace akka/serialization.
>>
>> Caused by: java.lang.NoClassDefFoundError:
>> akka/serialization/BaseSerializer$class
>> at
>> akka.remote.serialization.MiscMessageSerializer.<init>(MiscMessageSerializer.scala:25)
>> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>> at
>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
>> at
>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>> at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
>> at
>> akka.actor.ReflectiveDynamicAccess.$anonfun$createInstanceFor$1(ReflectiveDynamicAccess.scala:33)
>> at scala.util.Try$.apply(Try.scala:213)
>> at
>> akka.actor.ReflectiveDynamicAccess.createInstanceFor(ReflectiveDynamicAccess.scala:28)
>> at
>> akka.actor.ReflectiveDynamicAccess.$anonfun$createInstanceFor$4(ReflectiveDynamicAccess.scala:39)
>> at scala.util.Success.flatMap(Try.scala:251)
>> at
>> akka.actor.ReflectiveDynamicAccess.createInstanceFor(ReflectiveDynamicAccess.scala:39)
>> at akka.serialization.Serialization.serializerOf(Serialization.scala:320)
>> at
>> akka.serialization.Serialization.$anonfun$serializers$2(Serialization.scala:346)
>> at
>> scala.collection.TraversableLike$WithFilter.$anonfun$map$2(TraversableLike.scala:874)
>> at scala.collection.immutable.HashMap$HashMap1.foreach(HashMap.scala:394)
>> at
>> scala.collection.immutable.HashMap$HashTrieMap.foreach(HashMap.scala:721)
>> at
>> scala.collection.TraversableLike$WithFilter.map(TraversableLike.scala:873)
>> at akka.serialization.Serialization.<init>(Serialization.scala:346)
>> at
>> akka.serialization.SerializationExtension$.createExtension(SerializationExtension.scala:16)
>> at
>> akka.serialization.SerializationExtension$.createExtension(SerializationExtension.scala:13)
>> at akka.actor.ActorSystemImpl.registerExtension(ActorSystem.scala:913)
>> at
>> akka.actor.ActorSystemImpl.$anonfun$loadExtensions$1(ActorSystem.scala:946)
>> at scala.collection.Iterator.foreach(Iterator.scala:943)
>> at scala.collection.Iterator.foreach$(Iterator.scala:943)
>> at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
>> at scala.collection.IterableLike.foreach(IterableLike.scala:74)
>> at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
>> at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
>> at akka.actor.ActorSystemImpl.loadExtensions$1(ActorSystem.scala:944)
>> at akka.actor.ActorSystemImpl.loadExtensions(ActorSystem.scala:961)
>> at akka.actor.ActorSystemImpl.liftedTree2$1(ActorSystem.scala:833)
>> at akka.actor.ActorSystemImpl._start$lzycompute(ActorSystem.scala:823)
>> at akka.actor.ActorSystemImpl._start(ActorSystem.scala:823)
>> at akka.actor.ActorSystemImpl.start(ActorSystem.scala:842)
>> at akka.actor.RobustActorSystem$.internalApply(RobustActorSystem.scala:96)
>> at akka.actor.RobustActorSystem$.apply(RobustActorSystem.scala:70)
>> at akka.actor.RobustActorSystem$.create(RobustActorSystem.scala:55)
>> at
>> org.apache.flink.runtime.akka.AkkaUtils$.createActorSystem(AkkaUtils.scala:125)
>> at
>> org.apache.flink.runtime.akka.AkkaUtils.createActorSystem(AkkaUtils.scala)
>> at
>> org.apache.flink.runtime.clusterframework.BootstrapTools.startActorSystem(BootstrapTools.java:276)
>> at
>> org.apache.flink.runtime.clusterframework.BootstrapTools.startLocalActorSystem(BootstrapTools.java:260)
>> ... 11 more
>>
>>
>> This is my gradle:
>>
>> implementation files('lib/flink-avro-confluent-registry-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-clients_2.11-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-connector-kafka_2.11-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-connector-wikiedits_2.11-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-core-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-java-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-metrics-dropwizard-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-streaming-java_2.11-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-connector-kafka-base_2.11-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-avro-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-annotations-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-runtime_2.11-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-shaded-asm-7-7.1-11.0.jar')
>> implementation files('lib/flink-metrics-core-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-optimizer_2.11-1.12-SNAPSHOT.jar')
>> implementation files('lib/flink-shaded-guava-18.0-11.0.jar')
>>
>> implementation group: 'org.scala-lang', name: 'scala-library', version: 
>> '2.12.12'
>> implementation group: 'org.apache.commons', name: 'commons-lang3', version: 
>> '3.11'
>> implementation group: 'commons-collections', name: 'commons-collections', 
>> version: '3.2.2'
>> implementation group: 'com.esotericsoftware.kryo', name: 'kryo', version: 
>> '2.16'
>> implementation group: 'com.typesafe', name: 'config', version: '1.3.2'
>>
>> implementation group: 'com.typesafe.akka', name: 'akka-remote_2.12', 
>> version: '2.5.12'
>> implementation group: 'com.typesafe.akka', name: 'akka-slf4j_2.12', version: 
>> '2.5.12'
>> implementation group: 'com.typesafe.akka', name: 'akka-stream_2.12', 
>> version: '2.5.12'
>> implementation group: 'com.typesafe.akka', name: 'akka-protobuf_2.12', 
>> version: '2.5.12'
>>
>> Note: the row of "akka-slf4j" will automatically include "akka-actor" so
>> I don't need to add "akka-actor" explicitly.
>>
>> Since Flink 1.12 will be released in Oct 2020, it makes sense for me to
>> use it for development to save a lot of workaround code dealing with the
>> avro 1.8 serialization issue [1] in older Flink. However, this exception is
>> blocking me from doing so. Any idea is highly appreciated!
>>
>> Thanks
>> Lian
>>
>>
>> [1] https://issues.apache.org/jira/browse/FLINK-19339
>>
>>
>>

-- 

Create your own email signature
<https://www.wisestamp.com/signature-in-email/?utm_source=promotion&utm_medium=signature&utm_campaign=create_your_own&srcid=5234462839406592>

Reply via email to