假设:
$cat build.sbt
scalaVersion := "2.11.8"
libraryDependencies ++= List(
"io.spray" %% "spray-client" % "1.3.3"
,"io.spray" %% "spray-json" % "1.3.2"
,"com.typesafe.akka" %% "akka-actor" % "2.4.2"
,"com.typesafe" % "config" % "1.3.0"
,"org.scalatest" % "scalatest_2.11" % "2.2.6" % "test"
)
使用此answer,我尝试使用JDK 7.
但是,我收到了以下错误:
$sbt -java-home /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/ clean test
[info] Loading project definition from /Users/Kevin/Workspace/Work/project/project
[info] Set current project to project (in build file:/Users/Kevin/Workspace/Work/project/)
[success] Total time: 0 s, completed Mar 14, 2016 3:51:10 PM
[info] Updating {file:/Users/Kevin/Workspace/Work/project/}project...
[info] Resolving jline#jline;2.12.1 ...
[info] Done updating.
[info] Compiling 9 Scala sources to /Users/Kevin/Workspace/Work/project/target/scala-2.11/classes...
[error] Class java.time.Duration not found - continuing with a stub.
[error] Class java.time.Duration not found - continuing with a stub.
[error] two errors found
[error] (compile:compileIncremental) Compilation failed
[error] Total time: 5 s, completed Mar 14, 2016 3:51:16 PM
看看这个answer,我猜/我猜测我需要添加一个java8时间库作为依赖项?
答案 0 :(得分:2)
我不确定如何解决此错误。
此错误表示您的代码中的某个位置正在java.time.Duration
中继,这是Java 8中公开的新API。由于您已降级为Java 7,因此该类已不再可用
删除依赖项,或者恢复为Java8。
答案 1 :(得分:2)
Akka 2.4需要JDK8,除非您使用的是商业版本,这在documentation中有所提及。
相关提取物
Akka要求您在计算机上安装Java 8或更高版本。
Typesafe提供了Akka的商业版本和相关项目,如Scala或Play,作为Reactive Platform的一部分,如果您的项目尚未升级到Java 8,则可用于Java 6。它还包括其他商业功能或库。
Typesafe config 1.3.0也depends on java8
1.2.1版及更早版本是为Java 6构建的,而新版本(1.3.0及更高版本)将是为Java 8构建的。
还要注意,spray-client 1.3.3依赖于Akka 2.3.9(参见http://spray.io/project-info/current-versions/#current-versions) 您可能希望升级到akka-http,这是喷涂的继承者。
(因为您似乎使用符合posix标准的系统,您可能需要查看jenv来管理每个项目的jdk版本)