2017-01-16 56 views
0

Cassandra完全新增。尝试使用phantom-dsl初始化Cassandra中的数据库。我收到了这个错误信息。在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 [email protected] 
    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-dslConnectordatastax-driverClusterBuilder的问题。

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("[email protected]"), 
      Some(UUID.randomUUID()), 
     ) 


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

回答

0

看起来有可能是你正在寻找多种问题:

幻影的最新版本是2.1 .3,我强烈建议使用它,特别是如果你刚刚启动ou吨。如果您需要,迁移指南是here

整个反射机制已被最新版本所取代,所以错误应该神奇地消失。对于测试和产生的对象,我也期待包括com.outworkers.util.testing,这是Maven的中央免费提供

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]