Coursera - Scala中的函数式编程原理 - 由于错误而无法与示例项目一起使用

时间:2014-06-29 16:59:49

标签: windows scala sbt

从那个课程开始 https://class.coursera.org/progfun-004/assignment

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

将此导入Intellij Idea。

但问题是验证代码,因为当然他们在控制台中运行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中创建了新项目并且它可以工作......但是SBT的版本在示例项目中是另一个。但是当我将SBT版本更改为最新版本时,我会收到依赖性错误...我堆叠并且无法移动...如何解决这种情况?

我想我可以尝试将所有项目移动到Java8或强制我的控制台中的sbt与Java7一起使用。我不知道如何做到这两点:)

2 个答案:

答案 0 :(得分:6)

我相信你得到了这个问题,因为Scala之前的2.10.4不支持JDK8。有一个issue on 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,请重新启动它。通过在sbt命令行中键入about来确认您正在运行的版本。

答案 1 :(得分:0)

我使用windows,这个命令在git shell(http://msysgit.github.io/)中适用于我:

sbt -java-home&#34; C:\ Program Files \ Java \ jdk7&#34;

当然除了jdk8之外你还要安装jdk7(我已经在路径中安装了它)。