akkaのgradle runがubuntuで動かなかった件について

分散フレームワークのAkkaのJavaチュートリアルUbuntuで実行しようとした所ハマった。

具体的に言うと gradle runしようとすると

 $ gradle run

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> java.lang.reflect.UndeclaredThrowableException

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 6s
1 actionable task: 1 executed

などと :compileJava 関連でエラーが発生した。 同じ環境のMacOSXでは動いたのでなぜ…?となっていたが、原因を1つずつ調査していくと

今回利用していたUbuntu環境にに入っていたJVMはopneJDK だった。 ここのJava環境は雑に ubuntu javaなどで検索して出てきたものをいれたと思うが、このVM環境がAkkaに対応していなかったと推測される。

そこでubuntuに入っていたjava環境を一旦apt経由で削除して入れ直した。

参考にしたのは下記リンクのOracleのところ。

www.digitalocean.com

 %  sudo apt-file search add-apt-repository
software-properties-common: /usr/bin/add-apt-repository
software-properties-common: /usr/share/man/man1/add-apt-repository.1.gz
user@ubuntu ~/Documents/akka/akka-quickstart-java
$  sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java9-installer

ほぼこれくらいを行ってjvmを確認すると

 % java --version
java 9.0.1
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

ちゃんとOracleのものが使われている。 ここで gradle run すると

gradle run
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details

> Task :run
>>> Press ENTER to exit <<<
[INFO] [12/28/2017 22:44:47.536] [helloakka-akka.actor.default-dispatcher-2] [akka://helloakka/user/printerActor] Good day, Play
[INFO] [12/28/2017 22:44:47.537] [helloakka-akka.actor.default-dispatcher-2] [akka://helloakka/user/printerActor] Howdy, Akka
[INFO] [12/28/2017 22:44:47.537] [helloakka-akka.actor.default-dispatcher-2] [akka://helloakka/user/printerActor] Howdy, Lightbend
[INFO] [12/28/2017 22:44:47.545] [helloakka-akka.actor.default-dispatcher-3] [akka://helloakka/user/printerActor] Hello, Java
<=========----> 75% EXECUTING [14s]

ちゃんと実行された。