【问题标题】:Failed assertion with automated initialisation of database in Cassandra在 Cassandra 中自动初始化数据库的断言失败
【发布时间】:2017-05-31 02:19:27
【问题描述】:

对 Cassandra 来说是全新的。尝试使用 phantom-dsl 在 Cassandra 中初始化数据库。我收到此错误消息。

*** RUN ABORTED ***
  java.lang.AssertionError: assertion failed: no symbol could be loaded from class com.datastax.driver.core.Cluster in package core with name Cluster and classloader sun.misc.Launcher$AppClassLoader@279f2327
  at scala.reflect.runtime.JavaMirrors$JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$classToScala1(JavaMirrors.scala:1021)
  at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$classToScala$1.apply(JavaMirrors.scala:980)
  at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$classToScala$1.apply(JavaMirrors.scala:980)
  at scala.reflect.runtime.JavaMirrors$JavaMirror$$anonfun$toScala$1.apply(JavaMirrors.scala:97)
  at scala.reflect.runtime.TwoWayCaches$TwoWayCache$$anonfun$toScala$1.apply(TwoWayCaches.scala:39)
  at scala.reflect.runtime.Gil$class.gilSynchronized(Gil.scala:19)
  at scala.reflect.runtime.JavaUniverse.gilSynchronized(JavaUniverse.scala:16)
  at scala.reflect.runtime.TwoWayCaches$TwoWayCache.toScala(TwoWayCaches.scala:34)
  at scala.reflect.runtime.JavaMirrors$JavaMirror.toScala(JavaMirrors.scala:95)
  at scala.reflect.runtime.JavaMirrors$JavaMirror.classToScala(JavaMirrors.scala:980)

我不确定这是否是phantom-dsl 中的Connectordatastax-driver 中的ClusterBuilder 的问题。

Connector.scala

package com.neruti.db

import com.neruti.db.models._

import com.websudos.phantom.database.Database
import com.websudos.phantom.connectors.ContactPoints
import com.websudos.phantom.dsl.KeySpaceDef

object Connector {

  val host= Seq("localhost")
  val port = 9160
  val keySpace: String = "nrt_entities"
  //  val inet = InetAddress.getByName

  lazy val connector = ContactPoints(host,port).withClusterBuilder(
    _.withCredentials("cassandra", "cassandra")

  ).keySpace(keySpace)

}

CassandraSpec.scala

package com.neruti.db

import com.neruti.User
import com.neruti.db.models._
import com.neruti.db.databases._
import com.neruti.db.services._
import com.neruti.db.Connector._

import java.util.UUID

import com.datastax.driver.core.ResultSet
import org.scalatest._
import org.scalatest.{BeforeAndAfterAll,FlatSpec,Matchers,ShouldMatchers}
import org.scalatest.concurrent.ScalaFutures
import org.scalamock.scalatest.MockFactory
import scala.concurrent.duration._
import scala.concurrent.{Await, Future}
import scala.concurrent.ExecutionContext.Implicits.global


abstract class BaseCassandraSpec extends FlatSpec
with BeforeAndAfterAll 
with Inspectors
with Matchers
with OptionValues
with ScalaFutures

class CassandraTest extends BaseCassandraSpec
with ProductionDatabase
with UserService
with Connector.connector.Connector{

        val user = User(
          Some("foobar"), 
          Some("foo@foobar.com"), 
          Some(UUID.randomUUID()),
          )


 override protected def beforeAll(): Unit = {
    Await.result(database.userModel.create(user),10.seconds)
   } 
}

【问题讨论】:

    标签: scala datastax phantom-dsl


    【解决方案1】:

    看起来您可能正在查看多个问题:

    phantom 的最新版本是 2.1.3,我强烈建议您使用它,尤其是在您刚开始的时候。迁移指南是here,以备不时之需。

    整个反射机制已在最新版本中被替换,因此错误应该会神奇地消失。关于测试和生成对象,我还希望包括 com.outworkers.util.testing,它可以在 Maven Central 上免费获得

    libraryDependencies ++= Seq(
      //..,
      "com.outworkers" %% "phantom-dsl" % "2.1.3",
      "com.outworkers" %% "util-testing" % "0.30.1" % Test
    )
    

    这将为您提供自动案例类生成:

    import com.outworkers.util.testing._
    
    val sample = gen[User]
    

    【讨论】:

      猜你喜欢
      • 2014-12-17
      • 2012-01-12
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      相关资源
      最近更新 更多