尝试使用Datomisca添加模式会导致NoSuchMethodError

时间:2016-11-16 02:14:34

标签: scala datomic datomisca

我尝试使用Datomisca get started,但入门代码会产生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而不是Attribute()的处理工作正常。因此,似乎该错误与Datomisca的{{1}}有关。

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

1 个答案:

答案 0 :(得分:0)

这是一个scala版本问题。

最初,我使用了以下内容:

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

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