2

I am learning scala follow this tutorial with docker image hseeberger/scala-sbt

with first version of build.sbt

libraryDependencies += "joda-time" % "joda-time" % "2.10.2"

everything is OK.

this piece of code (snippet_1)

import org.joda.time._
var dt = new DateTime

got what I want.

with second version of build.sbt

libraryDependencies ++= Seq{
    "joda-time" % "joda-time" % "2.10.2";
    "org.joda" % "joda-convert" % "2.2.1"
}

snippet_1 got this error

<console>:7: error: object time is not a member of package org.joda
       import org.joda.time._
                       ^

the only difference from that tutorial is that I replaced , with ; in the build.sbt as , causes error.

this command comes from this post

sbt eclipse

causes this error

[warn] Executing in batch mode.
[warn]   For better performance, hit [ENTER] to switch to interactive mode, or
[warn]   consider launching sbt without any commands, or explicitly passing 'shell'
[info] Loading project definition from /root/project
[info] Set current project to root (in build file:/root/)
[error] Not a valid command: eclipse (similar: help, alias)
[error] Not a valid project ID: eclipse
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: eclipse (similar: deliver, licenses, clean)
[error] eclipse
[error]        ^

any ideas?

Mario Galic
  • 47,285
  • 6
  • 56
  • 98

1 Answers1

4

The problem is this:

Seq{
    "joda-time" % "joda-time" % "2.10.2";
    "org.joda" % "joda-convert" % "2.2.1"
}

Curly brackets mean you're passing Seq a single argument in the form of a code block. The value of a code block is always the value of the last line in the block - in this case, "org.joda" % "joda-convert" % "2.2.1". The joda-time dependency is never added.

You can fix this by using round brackets and commas to supply multiple arguments to Seq:

Seq(
    "joda-time" % "joda-time" % "2.10.2", 
    "org.joda" % "joda-convert" % "2.2.1"
)

Of particular note:

the only difference from that tutorial is that I replaced , with ; in the build.sbt as , causes error.

; and , have entirely different meanings in Scala and are not interchangeable. If you find yourself needing to make that replacement, you should stop and check what you're doing.

Astrid
  • 1,808
  • 12
  • 24