尝试使用 Datomisca 添加架构会导致 NoSuchMethodError
Trying to add schema with Datomisca results in NoSuchMethodError
我正在尝试 get started 使用 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.apply(Connection.scala:152)
at datomisca.Connection$$anonfun$transact$extension.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()
.
有关
问题是什么以及如何解决?
这是 Scala 版本问题。
最初,我使用了以下内容:
<dependency>
<groupId>com.github.dwhjames</groupId>
<artifactId>datomisca_2.11</artifactId>
<version>0.7.0</version>
</dependency>
将 artifactId
更改为 "datomisca_2.10" 为我修复了它。
我正在尝试 get started 使用 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.apply(Connection.scala:152)
at datomisca.Connection$$anonfun$transact$extension.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()
.
问题是什么以及如何解决?
这是 Scala 版本问题。
最初,我使用了以下内容:
<dependency>
<groupId>com.github.dwhjames</groupId>
<artifactId>datomisca_2.11</artifactId>
<version>0.7.0</version>
</dependency>
将 artifactId
更改为 "datomisca_2.10" 为我修复了它。