RuntimeException: java.lang.UnsupportedClassVersionError の解消
新しいことをして遊ぼうと思い、Play2.3.6とJava1.8でアプリをrunした時に出た実行時エラー。
[info] Compiling 2 Scala sources and 1 Java source to /home/hiroka/download/activator-1.2.10-minimal/BehaviorScan/target/scala-2.11/classes... [warn] Error reading API from class file : java.lang.UnsupportedClassVersionError: controllers/routes$javascript : Unsupported major.minor version 52.0 [warn] Error reading API from class file : java.lang.UnsupportedClassVersionError: controllers/routes$ref : Unsupported major.minor version 52.0 [warn] Error reading API from class file : java.lang.UnsupportedClassVersionError: controllers/routes : Unsupported major.minor version 52.0 [info] play - Application started (Dev) [error] application - ! @6k3gn21mp - Internal server error, for (GET) [/] -> play.api.Application$$anon$1: Execution exception[[RuntimeException: java.lang.UnsupportedClassVersionError: controllers/routes : Unsupported major.minor version 52.0]] at play.api.Application$class.handleError(Application.scala:296) ~[play_2.11-2.3.6.jar:2.3.6] at play.api.DefaultApplication.handleError(Application.scala:402) [play_2.11-2.3.6.jar:2.3.6] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:205) [play_2.11-2.3.6.jar:2.3.6] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:202) [play_2.11-2.3.6.jar:2.3.6] at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36) [scala-library-2.11.1.jar:na] Caused by: java.lang.RuntimeException: java.lang.UnsupportedClassVersionError: controllers/routes : Unsupported major.minor version 52.0 at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:523) ~[play_2.11-2.3.6.jar:2.3.6] at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:130) ~[play_2.11-2.3.6.jar:2.3.6] at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:130) ~[play_2.11-2.3.6.jar:2.3.6] at play.utils.Threads$.withContextClassLoader(Threads.scala:21) ~[play_2.11-2.3.6.jar:2.3.6] at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:129) ~[play_2.11-2.3.6.jar:2.3.6] Caused by: java.lang.UnsupportedClassVersionError: controllers/routes : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.7.0_17] at java.lang.ClassLoader.defineClass(ClassLoader.java:791) ~[na:1.7.0_17] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.7.0_17] at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) ~[na:1.7.0_17] at java.net.URLClassLoader.access$100(URLClassLoader.java:71) ~[na:1.7.0_17] [success] Total time: 3650 s, completed 2014/10/31 13:26:48
ちなみに私の開発環境の状態はというと、
コンパイルに使うJavaと実行に使うJavaのバージョンが違うっぽいーということで、
よくよく思いだしたらPlayって実行時にはJAVA_HOMEで指定されたJavaを使っていた気がする・・・。
( $ java -version は 1.8 にしたけど、$ echo $JAVA_HOME は 1.7 だった私の環境)
というわけで、JAVA_HOMEをちゃんと1.8に合わせたら、ビンゴでした。
なんでか大昔にも一度躓いた記憶がある気がする。
何をした時だったかな。
その時よりは早く思い出せたので、成長だと思っておきます。