まじめにゆいがどくそん

仕事関連の真面目な記事が満載です、多分。

Play Framework 備忘録

Play 2.1 日本語ドキュメント

http://www.playframework-ja.org/documentation/2.1.2/Home

インストール (To Ubuntu 13.04 via)

環境

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=13.04
DISTRIB_CODENAME=raring
DISTRIB_DESCRIPTION="Ubuntu 13.04"

$ arch
x86_64

$ uname -a
Linux ubuntu 3.8.0-27-generic #40-Ubuntu SMP Tue Jul 9 00:17:05 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

Java(JDK) インストール

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update

# Java7の場合
$ sudo apt-get install oracle-java7-installer

# Java8の場合
$ sudo apt-get install oracle-java8-installer

# 参考:Javaの切り替え方法
$ sudo update-alternatives --config java

alternative java (/usr/bin/java を提供) には 3 個の選択肢があります。

  選択肢    パス                                          優先度  状態
------------------------------------------------------------
* 0            /usr/lib/jvm/java-8-oracle/jre/bin/java          1073      自動モード
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      手動モード
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1072      手動モード
  3            /usr/lib/jvm/java-8-oracle/jre/bin/java          1073      手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 

Play Framework インストール

http://www.playframework-ja.org/download の 【公式の最新バージョン】ボタンのリンク先からバイナリパッケージをダウンロード
# バージョン2.1.3の場合
$ mkdir ~/play
$ cd ~/play
$ wget http://downloads.typesafe.com/play/2.1.3/play-2.1.3.zip
任意の場所に展開してシンボリックリンクを貼る
$ unzip play-2.1.3.zip
$ sudo mv play-2.1.3 /usr/local/
$ sudo ln -s /usr/local/play-2.1.3 /usr/local/play
パスを通す

~/profile や ~/bashrc に追記

export PLAY_HOME=/usr/local/play
export PATH=$PATH:$PLAY_HOME
設定を反映
$ source ~/.profile
または
$ source ~/.bashrc

注意

手元の環境では、Java7がインストールされている状態でOracle Java8をインストールしてJava8に切り替えたところ、"play run" を実行してからブラウザでアクセスした場合に下記のエラーが発生した。
※下記のログはPlayのバージョンが2.1.2のときのもの

play.api.PlayException: Cannot init the Global object[Global : Unsupported major.minor version 52.0]
        at play.api.WithDefaultGlobal$$anonfun$play$api$WithDefaultGlobal$$globalInstance$1.apply(Application.scala:57) ~[play_2.10.jar:2.1.2]
        at play.api.WithDefaultGlobal$$anonfun$play$api$WithDefaultGlobal$$globalInstance$1.apply(Application.scala:51) ~[play_2.10.jar:2.1.2]
        at play.utils.Threads$.withContextClassLoader(Threads.+scala:18) ~[play_2.10.jar:2.1.2]
        at play.api.WithDefaultGlobal$class.play$api$WithDefaultGlobal$$globalInstance(Application.scala:50) ~[play_2.10.jar:2.1.2]
        at play.api.DefaultApplication.play$api$WithDefaultGlobal$$globalInstance$lzycompute(Application.scala:383) ~[play_2.10.jar:2.1.2]
        at play.api.DefaultApplication.play$api$WithDefaultGlobal$$globalInstance(Application.scala:383) ~[play_2.10.jar:2.1.2]
Caused by: java.lang.UnsupportedClassVersionError: Global : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.7.0_25]
        at java.lang.ClassLoader.defineClass(ClassLoader.java:792) ~[na:1.7.0_25]
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.7.0_25]
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) ~[na:1.7.0_25]
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71) ~[na:1.7.0_25]
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.7.0_25]
[warn] play - No application found at invoker init

手元の環境で解決した手順は下記のとおり

  • Java8をアンインストール
$ sudo apt-get purge oracle-java8-installer
  • Java環境を選択
$ sudo update-alternatives --config java                                                                                                 
update-alternatives: 警告: /usr/lib/jvm/java-8-oracle/jre/bin/java の alternative (リンクグループ java のパート) が存在しません。alternatives のリストから削除しています
alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。

  選択肢    パス                                          優先度  状態
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-oracle/jre/bin/java          1072      自動モード
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      手動モード
* 2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1072      手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 

※「update-alternatives: 警告:……」の部分は、環境や状況によっては表示されないかもしれません。

  • Playアプリケーションを初期化
    • Playアプリケーションのルートディレクトリで "play" 実行後、"clean" -> "update" -> "compile" を実行。

"compile" 時にエラーがなければJava環境の切り替えとPlayアプリケーションの初期化は成功。

hoge@ubuntu:~/git/play-authenticate/samples/java/play-authenticate-usage$ play

...

[play-authenticate-usage] $ clean
[success] Total time: 0 s, completed 2013/08/07 13:40:31
[play-authenticate-usage] $ update
[info] Updating {file:/home/twadmin/git/play-authenticate/samples/java/play-authenticate-usage/}play-authenticate-usage...
[info] Done updating.                                                                  
[success] Total time: 25 s, completed 2013/08/07 13:40:59
[play-authenticate-usage] $ compile
[info] Compiling 47 Scala sources and 16 Java sources to /home/twadmin/git/play-authenticate/samples/java/play-authenticate-usage/target/scala-2.10/classes...
[success] Total time: 36 s, completed 2013/08/07 13:41:37
[play-authenticate-usage] $ 

参考サイト


Play Framework 2徹底入門

Play Framework 2徹底入門

Play for Java: Covers Play 2

Play for Java: Covers Play 2

Play for Scala: Covers Play 2

Play for Scala: Covers Play 2

Scala逆引きレシピ (PROGRAMMER’S RECiPE)

Scala逆引きレシピ (PROGRAMMER’S RECiPE)