0

我正在尝试开始使用 Datomisca,但入门代码会导致NoSuchMethodError.

这是一个重现该内容的紧凑片段。

package tw.txstream.flinktest

import scala.concurrent.ExecutionContext.Implicits.global
import datomisca._

object DatomicTest {

  def main(args: Array[String]){
    val uri = "datomic:dev://localhost:4334/test"

    // ensure clean DB
    println("Deleted DB? " + Datomic.deleteDatabase(uri))
    println("Created DB? " + Datomic.createDatabase(uri))
    implicit val conn = Datomic.connect(uri)

    Datomic.transact(Schema.txDataA) map { tx =>
      println("Transacted")
    }
  }
}

object Schema {
  object ns {
    val ns1 = Namespace("ns1")
  }
  val attr1 = Attribute(
    ns.ns1 / "attr1",
    SchemaType.string,
    Cardinality.one
  ).withDoc("attr1")

  val ident1 = AddIdent(ns.ns1 / "ident1")
  val txDataA: Seq[TxData] = Seq(attr1)
  val txDataB: Seq[TxData] = Seq(ident1)
}

我得到的例外:

Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object;
    at datomisca.Attribute.toAddOps$lzycompute(Attribute.scala:80)
    at datomisca.Attribute.toAddOps(Attribute.scala:78)
    at datomisca.Attribute.toTxData(Attribute.scala:98)
    at datomisca.Connection$$anonfun$transact$extension$1.apply(Connection.scala:152)
    at datomisca.Connection$$anonfun$transact$extension$1.apply(Connection.scala:151)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at datomisca.Connection$.transact$extension(Connection.scala:151)
    at datomisca.TransactOps$class.transact(TransactOps.scala:53)
    at datomisca.Datomic$.transact(Datomic.scala:31)

然而,交易Schema.txDataB而不是Schema.txDataA工作正常。因此,该错误似乎与 Datomisca 的Attribute().

有什么问题以及如何解决这个问题?

4

1 回答 1

0

这是一个scala版本问题。

最初,我使用以下内容:

    <dependency>
        <groupId>com.github.dwhjames</groupId>
        <artifactId>datomisca_2.11</artifactId>
        <version>0.7.0</version>
    </dependency>

更改artifactId为“datomisca_2.10”为我修复了它。

于 2016-11-16T04:22:09.580 回答