Coursera – Scala中的函数式编程原则 – 由于错误而无法在示例项目中使用

从该课程https://class.coursera.org/progfun-004/assignment

我下载了http://spark-public.s3.amazonaws.com/progfun/assignments/example.zip

将其导入Intellij Idea。

但问题是validation代码,因为他们在控制台中运行sbt …

在控制台中运行“sbt”后,我得到:

D:\learning\example>sbt Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0 [info] Loading project definition from D:\learning\example\project\project error: error while loading CharSequence, class file 'C:\Program Files\Java\jdk1.8.0_05\jre\lib\rt.jar(java/lang/CharSequence.cl ass)' is broken (bad constant pool tag 15 at byte 1501) [error] Type error in expression Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? q 

我使用SBT在Intellij Idea中创build了一个新项目,它可以工作…但是SBT的版本和示例项目不同。 但是,当我更改SBT的版本最新我得到依赖性错误…我堆叠,不能移动…如何解决这样的情况?

我想我可以尝试将所有项目移到Java8,或者在我的控制台中强制使用Java7。 我不知道该怎么做:)

我相信你会遇到这个问题,因为Scala之前的版本2.10.4不支持JDK8。 在github上描述这个问题有一个问题。 您必须降级到Java 7。

如果你在Linux上运行sbt,你可以设置-java-home参数。

  $ sbt -help # java version (default: java from PATH, currently java version "1.7.0_60") -java-home <path> alternate JAVA_HOME 

然而,在Windows上并不那么容易。

Sbt使用sbt.bat在Windows上运行sbt。 你可以通过在Windows控制台中写入where sbt来找到它。

 C:\Users\lpiepiora>where sbt C:\Program Files\sbt\bin\sbt C:\Program Files\sbt\bin\sbt.bat 

现在你可以编辑C:\Program Files\sbt\bin\sbt.bat并在文件的开头

 @REM SBT launcher script @REM @REM Envioronment: @REM JAVA_HOME - location of a JDK home dir (mandatory) @REM SBT_OPTS - JVM options (optional) @REM Configuration: @REM sbtconfig.txt found in the SBT_HOME. 

 set JAVA_HOME="C:\Program Files\...<path to your Java 7>" 

如果你正在运行,重新启动它。 通过在sbt命令行输入about确认您正在运行的版本。

我使用Windows和git shell( http://msysgit.github.io/ )中的这个命令适用于我:

sbt -java-home“C:\ Program Files \ Java \ jdk7”

当然,除了jdk8你必须安装jdk7(我已经安装在上面的路径)。