play framework (< v2.6)で aws sdk for java を利用しているとrunで実行エラー

古いplay framework （v2.5.x）を使っていて、久しぶりに`activator clean run`したらで下記のExceptionが発生して２日ほどハマってしまったので、メモ。

```java:NullPointerException
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:235)
	at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:65)
	at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
	at play.core.server.DevServerStart$.mainDev(DevServerStart.scala:64)
	at play.core.server.DevServerStart$.mainDevHttpMode(DevServerStart.scala:54)
	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:483)
	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)
[trace] Stack trace suppressed: run last application/compile:run for the full output.
[error] (application/compile:run) java.lang.reflect.InvocationTargetException
[error] Total time: 4 s, completed 2018/03/18 12:27:47
```

## 原因
* AWS SDK for Java（プロジェクトで利用している）の v1.11.238 で依存ライブラリに下記Nettyが追加されて、play framework （v2.5.x）でデフォルトで利用しているNetty Server と競合したため。

```xml:pom.xml
      <!-- Netty is used by Kinesis Video -->
      <netty.version>4.1.17.Final</netty.version>
```

参考：https://github.com/aws/aws-sdk-java/blame/master/pom.xml#L207

## 解決方法

* build.sbtのAWS SDK for JavaのところからNettyを除外。


```scala:build.sbt
// 変更前
libraryDependencies += "com.amazonaws" % "aws-java-sdk" % "1.11.+"
```


```scala:build.sbt
// 変更後
libraryDependencies += "com.amazonaws" % "aws-java-sdk" % "1.11.+" excludeAll(ExclusionRule(organization ="io.netty"))
```

※ AWS SDK内のKinesis Video　でNetty v4.1.17.Final を利用していると思うが、わたしのプロジェクトではKinesis Videoは使っていないため、上記のように除外しました。

sbtのplugin [dependencyTree](https://github.com/jrudolph/sbt-dependency-graph) で１つ１つ関連ありそうなものを見て、なんとかわかった感じでした。play framework 初心者だからなのかもしれないが。
もう、ActivatorもEOLだし、playのバージョンも古いからアップデートしないと...