Play Cassandra Netty Server исключение нулевого указателя - PullRequest
0 голосов
/ 23 ноября 2018

Привет, я использую playframework с такими технологиями, как,

spark = "2.3.1",
akka = "2.4.7"
hadoop = "2.7.7"
spring = "4.2.6.RELEASE",
spark-cassandra-connector 2.0.9 ,
cassandra-driver-core 3.0.6

Я получаю предупреждение ниже, во время чистой компиляции проекта

c.d.d.c.NettyUtil - Found Netty's native epoll transport, but not running on linux-based operating system. Using NIO instead

 io.netty:netty-handler:4.0.56.Final is selected over 4.0.36.Final
     +- com.datastax.cassandra:cassandra-driver-core:3.5.1 (depends on 4.0.56.Final)
     +- com.typesafe.netty:netty-reactive-streams:1.0.6    (depends on 4.0.36.Final)
     +- io.netty:netty-codec-http:4.0.36.Final             (depends on 4.0.36.Final)

во время запуска sbt,получить ниже ошибка

java.lang.NullPointerException
        at io.netty.channel.group.DefaultChannelGroup.add(DefaultChannelGroup.java:146)
        at play.core.server.NettyServer.bind(NettyServer.scala:140)
        at play.core.server.NettyServer.play$core$server$NettyServer$$bindChannel(NettyServer.scala:224)
        at play.core.server.NettyServer$$anonfun$1.apply(NettyServer.scala:216)
        at play.core.server.NettyServer$$anonfun$1.apply(NettyServer.scala:216)
        at scala.Option.map(Option.scala:146)
        at play.core.server.NettyServer.<init>(NettyServer.scala:216)
        at play.core.server.NettyServerProvider.createServer(NettyServer.scala:279)
        at play.core.server.NettyServerProvider.createServer(NettyServer.scala:278)
        at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:225)
        at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:61)
        at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
        at play.core.server.DevServerStart$.mainDev(DevServerStart.scala:60)
        at play.core.server.DevServerStart$.mainDevHttpMode(DevServerStart.scala:50)
        at play.core.server.DevServerStart.mainDevHttpMode(DevServerStart.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at play.runsupport.Reloader$.startDevMode(Reloader.scala:234)
        at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.devModeServer$lzycompute$1(PlayRun.scala:74)
        at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.play$sbt$run$PlayRun$$anonfun$$anonfun$$anonfun$$devModeServer$1(PlayRun.scala:74)
        at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:100)
        at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:53)
        at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
        at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
        at sbt.std.Transform$$anon$4.work(System.scala:63)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
        at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
        at sbt.Execute.work(Execute.scala:237)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
        at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
        at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
[error] (*:playRun) java.lang.reflect.InvocationTargetException

Как решить проблему с нетто?Есть ли проблема с несовпадающей версией ??

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

эта проблема связана с Кассандрой, поэтому на данный момент я использовал затененную версию Кассандры.Проблема возникла из-за того, что приложение использует другую версию netty, поэтому, чтобы избежать этого, предоставляется jar-версия cassandra с затененной версией, которая объединяет классы Netty в другой пакет

"com.datastax.cassandra"% "cassandra-driver-core "%" 3.1.4 "exclude (" io.netty "," * ") классификатор" shaded "

для ссылки: https://docs.datastax.com/en/developer/java-driver/3.1/manual/shaded_jar/

также вы можетеиспользуйте dependencyOverrides:

Чтобы изменить выбранную версию, добавьте переопределение:

dependencyOverrides + = ""% ""% ""

ref: https://www.scala-sbt.org/1.x/docs/Library-Management.html#Overriding+a+version

0 голосов
/ 24 ноября 2018

Я мог бы быть более полезным, если бы вы также предоставили здесь некоторый код (особенно код, который вы инициализируете netty), но проблема, с которой вы сталкиваетесь, заключается в использовании собственного транспорта Linux в системе, отличной от Linux.Попробуйте найти места, в которых вы используете Epoll, и заменить их на NIO, который поддерживается во всех ОС.Если вы также запускаете свое приложение в Linux, вам следует проверить, можете ли вы использовать Epoll с Epoll.isAvailable ()

...