Mac OS X Activator新播放框架错误

时间:2015-06-07 17:09:36

标签: java macos scala playframework typesafe-activator

我正在使用Typesafe 1.3.4中的最新激活器运行最新的Yosemite 10.10.3,我尝试创建一个新的Scala项目模板6,如果没有此错误,我将无法再运行该模板。

[info] Loading project definition from /Users/Master/x/x/project
java.lang.UnsupportedClassVersionError: play/runsupport/classloader/ApplicationClassLoaderProvider : Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at play.sbt.run.PlayRun$.<init>(PlayRun.scala:35)
    at play.sbt.run.PlayRun$.<clinit>(PlayRun.scala)
    at play.sbt.PlaySettings$.defaultSettings$lzycompute(PlaySettings.scala:70)
    at play.sbt.PlaySettings$.defaultSettings(PlaySettings.scala:47)
    at play.sbt.Play$.projectSettings(Play.scala:26)
    at sbt.Load$$anonfun$autoPluginSettings$1$1.apply(Load.scala:666)
    at sbt.Load$$anonfun$autoPluginSettings$1$1.apply(Load.scala:666)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:251)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:251)
    at scala.collection.AbstractTraversable.flatMap(Traversable.scala:105)
    at sbt.Load$.autoPluginSettings$1(Load.scala:666)
    at sbt.Load$.sbt$Load$$expandSettings$1(Load.scala:681)
    at sbt.Load$$anonfun$sbt$Load$$expandSettings$1$2.apply(Load.scala:682)
    at sbt.Load$$anonfun$sbt$Load$$expandSettings$1$2.apply(Load.scala:682)
    at scala.collection.IndexedSeqOptimized$class.foldl(IndexedSeqOptimized.scala:51)
    at scala.collection.IndexedSeqOptimized$class.foldLeft(IndexedSeqOptimized.scala:60)
    at scala.collection.mutable.WrappedArray.foldLeft(WrappedArray.scala:34)
    at scala.collection.TraversableOnce$class.$div$colon(TraversableOnce.scala:138)
    at scala.collection.AbstractTraversable.$div$colon(Traversable.scala:105)
    at sbt.Load$.sbt$Load$$expandSettings$1(Load.scala:682)
    at sbt.Load$.resolveProject(Load.scala:684)
    at sbt.Load$.finalizeProject$1(Load.scala:549)
    at sbt.Load$.loadTransitive(Load.scala:577)
    at sbt.Load$.loadProjects$1(Load.scala:442)
    at sbt.Load$.loadUnit(Load.scala:446)
    at sbt.Load$$anonfun$18$$anonfun$apply$11.apply(Load.scala:281)
    at sbt.Load$$anonfun$18$$anonfun$apply$11.apply(Load.scala:281)
    at sbt.BuildLoader$$anonfun$componentLoader$1$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(BuildLoader.scala:91)
    at sbt.BuildLoader$$anonfun$componentLoader$1$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(BuildLoader.scala:90)
    at sbt.BuildLoader.apply(BuildLoader.scala:140)
    at sbt.Load$.loadAll(Load.scala:334)
    at sbt.Load$.loadURI(Load.scala:289)
    at sbt.Load$.load(Load.scala:285)
    at sbt.Load$.load(Load.scala:276)
    at sbt.Load$.apply(Load.scala:130)
    at sbt.Load$.defaultLoad(Load.scala:36)
    at sbt.BuiltinCommands$.doLoadProject(Main.scala:481)
    at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:475)
    at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:475)
    at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:58)
    at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:58)
    at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:60)
    at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:60)
    at sbt.Command$.process(Command.scala:92)
    at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:98)
    at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:98)
    at sbt.State$$anon$1.process(State.scala:184)
    at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:98)
    at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:98)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.MainLoop$.next(MainLoop.scala:98)
    at sbt.MainLoop$.run(MainLoop.scala:91)
    at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:70)
    at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:65)
    at sbt.Using.apply(Using.scala:24)
    at sbt.MainLoop$.runWithNewLog(MainLoop.scala:65)
    at sbt.MainLoop$.runAndClearLast(MainLoop.scala:48)
    at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:32)
    at sbt.MainLoop$.runLogged(MainLoop.scala:24)
    at sbt.StandardMain$.runManaged(Main.scala:53)
    at sbt.xMain.run(Main.scala:28)
    at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
    at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
    at xsbt.boot.Launch$.run(Launch.scala:109)
    at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
    at xsbt.boot.Launch$.launch(Launch.scala:117)
    at xsbt.boot.Launch$.apply(Launch.scala:18)
    at xsbt.boot.Boot$.runImpl(Boot.scala:41)
    at xsbt.boot.Boot$.main(Boot.scala:17)
    at xsbt.boot.Boot.main(Boot.scala)
[error] java.lang.UnsupportedClassVersionError: play/runsupport/classloader/ApplicationClassLoaderProvider : Unsupported major.minor version 52.0

4 个答案:

答案 0 :(得分:3)

从版本2.4.0开始的最新Play框架需要Java 1.8。升级解决。

PlayFramework ChangeLog

答案 1 :(得分:1)

这是堆栈跟踪的相关部分:

java.lang.UnsupportedClassVersionError:      
play/runsupport/classloader/ApplicationClassLoaderProvider : Unsupported  
major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at

这意味着您已安装Java 7,但模板不支持它。尝试使用Java 8模板。

答案 2 :(得分:1)

如果您使用的是playframework 2.4.2,请确保已将开发机器设置为使用java 1.8.0 +

这就是你如何将你的机器设置为在ubuntu上使用java 1.8

  1. 设置java版本 sudo update-alternatives --config java
  2. 备用java有5种选择(提供/ usr / bin / java)。

    选择路径优先级状态

    • 0 / usr / lib / jvm / java-8-oracle / jre / bin / java 20004 auto mode 1 / usr / lib / jvm / java-7-openjdk-amd64 / jre / bin / java 1071手动模式 2 / usr / lib / jvm / java-7-oracle / jre / bin / java 20002手动模式 3 / usr / lib / jvm / java-8-oracle / bin / java 20000手动模式 4 / usr / lib / jvm / java-8-oracle / jre / bin / java 20004手动模式 5 /usr/lib/jvm/jre1.7.0_45/bin/java 1手动模式 按Enter键保留当前选项[*]或类型选择号:

    2.设置javac版本 sudo update-alternatives --config javac

    备用java有5种选择(提供/ usr / bin / java)。

    选择路径优先级状态

    • 0 / usr / lib / jvm / java-8-oracle / jre / bin / java 20004 auto mode 1 / usr / lib / jvm / java-7-openjdk-amd64 / jre / bin / java 1071手动模式 2 / usr / lib / jvm / java-7-oracle / jre / bin / java 20002手动模式 3 / usr / lib / jvm / java-8-oracle / bin / java 20000手动模式 4 / usr / lib / jvm / java-8-oracle / jre / bin / java 20004手动模式 5 /usr/lib/jvm/jre1.7.0_45/bin/java 1手动模式 按Enter键保留当前选项[*]或类型选择号:

      1. 将JAVA_HOME设置为java 1.8源(/ usr / lib / jvm / java-8-oracle / jre / bin / java)

    的〜/ .bashrc 但是对于Java,我遵循了https://askubuntu.com/questions/55848/how-do-i-install-oracle-java-jdk-7

    中的说明

    这对我来说已经足够了。

    你也可以定义多个java_home并且只有其中一个是活动的(其余的已注释)。

    假设你的bashrc文件中有

    导出JAVA_HOME = ...... jdk1.7

    导出JAVA_HOME = ...... jdk1.8

    通知1.8被评论。一旦你做了

    source~ / .bashrc

    jdk1.7将在路径中。

    你可以通过这种方式轻松切换它们。还有其他更永久的解决方案。我发布的链接有该信息。

答案 3 :(得分:0)

正如@nkadwa已经提到的,从版本2.4.0开始的最新Play框架需要Java 1.8。

值得一提的是,在Windows操作系统中,activator命令使用JAVA_HOME环境变量(如果已设置),以查找要使用的Java实例。

因此,即使您安装了Java 8,JAVA_HOME env变量也可以指向旧版本的JDK。这可能是出现这种错误的原因之一。

设置JAVA_HOME变量以指向新版本的JDK,或删除JAVA_HOME变量(如果您只想使用JRE)来解决此问题。