Playframework我相信是使用java 7,我得到的是不受支持的major.minor版本51.0

时间:2014-04-21 18:52:08

标签: java scala playframework

我在OSX上使用playframework 2.2.2。

我的命令行报告我正在使用以下java版本:

java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)

我正在使用tomcat jdbc池,当我加载我的播放应用程序时,我收到此错误:

[RuntimeException: java.lang.UnsupportedClassVersionError: org/apache/tomcat/jdbc/pool/PoolConfiguration : Unsupported major.minor version 51.0]

现在纠正我,如果我错了,但我相信某种方式使用自己的java版本,这是java 7正确吗?我记得在使用游戏的时候看到这个输出,但我似乎可以弄清楚我在哪里看到它。

那么问题是什么呢,是游戏是使用java 7进行编译,但是当我运行它时使用的是版本6?

注意:我没有使用play命令来运行我的应用程序,而是使用sbt输入b / c我有几个项目,然后我只需输入run

我在sbt的项目布局是:

common
services
web <-- play app

我如何解决这个问题,因为我有点迷失正在发生的事情。

1 个答案:

答案 0 :(得分:2)

Play 2.2与Java 6和7兼容。播放本身不附带Java,因此您的构建将获取已经在您系统上的Java版本。

这里是play命令中的逻辑。如您所见,play使用路径中的Java版本或JAVA_HOME中的版本。

if [ -z "$JAVA_HOME" ]; then
  JAVA="java"
else
  JAVA="$JAVA_HOME/bin/java"
fi

由于您在使用Tomcat类时遇到运行时错误,我认为它很可能不是Play编译问题。我的猜测是你正在使用需要Java 7或更高版本的Tomcat版本,例如Tomcat 8.有关详细信息,请参阅Apache Tomcat Versions

顺便说一句,您可以配置SBT / Play以确保它始终通过为Java编译器提供一些选项来生成Java 6字节码:

javacOptions ++= Seq("-source", "1.6", "-target", "1.6")

请参阅SBT's Java Sources docs