簡體   English   中英

要導入什么才能使<在Scala中為jodatime工作

[英]What to import to make < work for jodatime in Scala

我想比較LocalDateTime,但最終出現異常。

我有這些課:

import org.scala_tools.time.Imports._
import org.scala_tools.time.Implicits._

case class Event(id: String, startDate: LocalDateTime, action: String)

case class Events(events: List[Event], timeout: Int) {

   val timeoutDt: LocalDateTime =  new LocalDateTime().minusMinutes(timeout)

   lazy val oldEvents = events.filter { (e: Event) =>
     e.startDate < timeoutDt
   }

   lazy val eventsToSend = events.filterNot { (e: Event) =>
     e.startDate < timeoutDt
   }
}

我有這個例外:

scala> import org.scala_tools.time.Imports._
scala> import org.scala_tools.time.Implicits._

scala> val d1 = new LocalDateTime("2010-11-17T10:10:10") 
d1: org.joda.time.LocalDateTime = 2010-11-17T10:10:10.000

scala> val d2 = new LocalDateTime("2012-11-17T10:10:10")
d2: org.joda.time.LocalDateTime = 2012-11-17T10:10:10.000

scala> val e1 = new Event("a", d1, "a")
scala> val e2 = new Event("b", d2, "b")

scala> val es = Events(List(e1, e2), 10000)

scala> val old = es.oldEvents
java.lang.NoClassDefFoundError: scala/Ordered
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.scala$tools$nsc$util$ScalaClassLoader$$super$findClass(ScalaClassLoader.scala:86)
    at scala.tools.nsc.util.ScalaClassLoader$class.findClass(ScalaClassLoader.scala:51)
    at scala.tools.nsc.util...

我忘記了什么?

=======編輯============

我正在使用Scala 2.8.0。 感謝@Alex,我發現project/build/Project.scala文件中的依賴項不正確:

import java.io.File
import sbt._

class Project(info: ProjectInfo) extends DefaultProject(info) { 
  // ... omitted code

  // OBS: Must have this to access snapshots
  val snap = ScalaToolsSnapshots

  // Time
  lazy val jodaTime = "joda-time" % "joda-time" % "1.6" 
  lazy val scalaTime = "org.scala-tools" % "time" % "2.8.0-SNAPSHOT-0.2-SNAPSHOT"  // Does not work
}

以下代碼有效:

import java.io.File
import sbt._

class Project(info: ProjectInfo) extends DefaultProject(info) { 
  // ... omitted code

  // Time
  lazy val jodaTime = "joda-time" % "joda-time" % "1.6" 
  lazy val scalaTime = "org.scala-tools.time" % "time_2.8.0" % "0.2"
}

仍然不確定為什么快照不起作用。

java.lang.NoClassDefFoundError: scala/Ordered意味着您有Scala版本不匹配或類路徑問題。

您正在使用的庫很可能沒有針對當前的Scala版本進行編譯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM