分散フレームワークの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のところ。
% 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]
ちゃんと実行された。