Skip to content

Instantly share code, notes, and snippets.

@asufana
Last active December 14, 2015 02:59
Show Gist options
  • Save asufana/3303c579bba1ca61c22f to your computer and use it in GitHub Desktop.
Save asufana/3303c579bba1ca61c22f to your computer and use it in GitHub Desktop.
PlayFramework1をJava8で動作させる

PlayFramework1をJava8で動作させる

stackoverflow - Play framework 1.x with java 8 ということなので、やってみる。

環境

  • Mac OSX
  • Eclipse Kepler

Eclipseは Java8対応 させておく

JDK8 インストール

  1. OracleからJDK8をダウンロードし、インストール
  2. インストールしたJDKに切り替える(/usr/libexec/java_homeを利用するのがよい)
$ java -version
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01-447-11M4203)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01-447, mixed mode)
$
$ export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
$ java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

EclipseJDK設定

  • Preferences>Java>Installed JREs から Java SE 8 に変更
  • Preferences>Java>Compiler から 1.8 に変更

あるいは

  • プロジェクト単位の設定にて、Java Build Path での JDK 指定と、JDKJava Compiler を変更

Play1.3 インストール

  1. GitHubのPlayリポジトリから branch:1.3.x をダウンロード
  2. ZIP解凍して任意のフォルダに配置する
  3. コンパイルする
$ cd play1-1.3.x/framework
$ ant jar
  1. jarファイルが生成されていることを確認する
  2. 配置したPlayに切り替える
$ ln -s play1-1.3.x play
$ play -version
~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.3.x-bfdf802, http://www.playframework.org

テストプロジェクトで動作確認

  1. play new Java8Test にてプロジェクト作成
  2. play auto-test Java8Test にてテストをパスすることを確認

Play1.3 標準ライブラリの変更

Play1.2.7と比較する

追加

  • hamcrest-core-1.3.jar
  • jboss-logging-3.1.0.GA.jar

削除

  • hibernate-validator-4.1.0.Final.jar
  • jaxb-api-2.2.jar
  • jaxb-impl-2.1.12.jar
  • validation-api-1.0.0.GA.jar

バージョンアップ

括弧内は1.2.7でのバージョン

  • async-http-client-1.8.8.jar(←1.7.8)
  • cglib-nodep-3.1.jar(←2.2)
  • commons-codec-1.8.jar(←1.4)
  • commons-collections-3.2.1.jar(←3.1)
  • commons-email-1.3.1.jar(←1.2)
  • commons-fileupload-1.3.jar(←1.2.2)
  • commons-io-2.4.jar(←2.0.1)
  • commons-logging-1.1.3.jar(←1.1.1)
  • gson-2.2.4.jar(←2.2)
  • h2-1.3.173.jar(←1.3.166)
  • hibernate-commons-annotations-4.0.1.Final.jar(←3.2.0)
  • hibernate-core-4.1.3.Final.jar(←3.6.10)
  • hibernate-entitymanager-4.1.3.Final.jar(←3.6.10.Final)
  • ivy-2.3.0.jar(←2.2.0)
  • javassist-3.18.1-GA.jar(←3.9.0)
  • joda-time-2.3.jar(←2.1)
  • junit-4.11.jar(←4.10)
  • log4j-1.2.17.jar(←1.2.16)
  • mail-1.4.7.jar(←1.4.3)
  • netty-3.9.0.Final.jar(←3.4.2)
  • org.eclipse.jdt.core-3.9.50.v20140317-1741.jar(←3.7.1.v_B76_R37x)
  • oval-1.82.jar(←1.50)
  • signpost-core-1.2.1.2.jar(←1.2)
  • slf4j-api-1.7.5.jar(←1.6.1)
  • slf4j-log4j12-1.7.5.jar(←1.6.1)
  • snakeyaml-1.12.jar(←1.7)

変更なし

  • activation-1.1.1.jar
  • antlr-2.7.7.jar
  • asm-all-3.3.1.jar
  • bcprov-jdk15-1.45.jar
  • c3p0-0.9.1.2.jar
  • commons-beanutils-1.8.3.jar
  • commons-javaflow-1209105.jar
  • commons-lang-2.6.jar
  • dom4j-1.6.1.jar
  • ehcache-core-2.4.3.jar
  • ezmorph-1.0.3.jar
  • geronimo-servlet_2.5_spec-1.2.jar
  • groovy-all-1.8.6.jar
  • hibernate-jpa-2.0-api-1.0.1.Final.jar
  • jamon-2.7.jar
  • javax.inject-1.0.jar
  • jaxen-1.1.jar
  • jboss-transaction-api_1.1_spec-1.0.0.Final.jar
  • jj-imaging.jar(変わらず?)
  • jj-simplecaptcha.jar(変わらず?)
  • jj-textile.jar(変わらず?)
  • jj-wikitext.jar(変わらず?)
  • jregex-1.2_01.jar
  • jsr107cache-1.0.jar
  • memcached-2.6.jar
  • mysql-connector-java-5.1.20.jar
  • postgresql-9.0.jar
  • xmlpull-1.1.3.1.jar
  • xstream-1.4.2.jar

Play1.2.7アプリでの手当例

JPAクラス実装の変更

  • public static ThreadLocal local = new ThreadLocal(); が
  • public static ThreadLocal<Map<String, JPAContext>> currentEntityManager = new ThreadLocal<Map<String, JPAContext>>(); に変更ほか

自前トランザクション管理を行っている場合には、手当が必要

CriteriaImplクラスのパッケージ変更

Hibernate4になったことによるシグネチャ変更

  • org.hibernate.impl.CriteriaImpl から
  • org.hibernate.internal.CriteriaImpl へ

EnhancedUserTypeクラスのインターフェース変更

  • org.hibernate.usertype.EnhancedUserType
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment