【问题标题】:Class cast exception in scala playscala play中的类转换异常
【发布时间】:2016-10-27 06:36:18
【问题描述】:

我正在尝试使用 play.api.Configuration 对象来消除弃用警告

import com.datastax.driver.core.Cluster
import com.datastax.driver.core.policies.ConstantReconnectionPolicy
import play.api.Play.current
import play.libs.Akka

import scala.concurrent.ExecutionContext
import scala.collection.JavaConverters._
import play.api.Configuration
import javax.inject.Inject

object TestClient {

  val config = new Configuration(_)

 private val nodes = config.asInstanceOf[Configuration].getStringList("Test_ENDPOINT").map(_.asScala.toList).getOrElse(List("127.0.0.1"))

}

当我运行我的应用程序时出现错误

Caused by:  java.lang.ClassCastException: utils.TestClient$$anonfun$1 cannot be cast to play.api.Configuration

由于链依赖,我无法将此对象转换为类。以下是完整的跟踪:

play.api.UnexpectedException: Unexpected exception[ExceptionInInitializerError: null]
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:184)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:131)
    at scala.Option.map(Option.scala:146)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:131)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:129)
    at scala.util.Success.flatMap(Try.scala:231)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:129)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:121)
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
Caused by: java.lang.ExceptionInInitializerError: null
    at Global$.onStart(Global.scala:10)
    at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:111)
    at play.api.Play$$anonfun$start$1.apply(Play.scala:102)
    at play.api.Play$$anonfun$start$1.apply(Play.scala:102)
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
    at play.api.Play$.start(Play.scala:102)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:171)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:131)
    at scala.Option.map(Option.scala:146)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:131)
Caused by: java.lang.ClassCastException: utils.TestClient$$anonfun$1 cannot be cast to play.api.Configuration
    at utils.TestClient$.<init>(TestClient.scala:17)
    at utils.TestClient$.<clinit>(TestClient.scala)
    at Global$.onStart(Global.scala:10)
    at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:111)
    at play.api.Play$$anonfun$start$1.apply(Play.scala:102)
    at play.api.Play$$anonfun$start$1.apply(Play.scala:102)
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
    at play.api.Play$.start(Play.scala:102)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:171)

也尝试使用配置加载但不工作。

val config = Configuration.load() 

这一行有多个标记:

overloaded method value load with alternatives: (environment: play.api.Environment)play.api.Configuration <and> (environment: play.api.Environment,devSettings: Map[String,AnyRef])play.api.Configuration cannot be applied to ()
overloaded method value load with alternatives: (environment: play.api.Environment)play.api.Configuration <and> (environment: play.api.Environment,devSettings: Map[String,AnyRef])play.api.Configuration cannot be applied to ()

【问题讨论】:

标签: scala akka playframework-2.5


【解决方案1】:

这是您正在做的事情的说明:

scala> class Example(s:String)
defined class Example

scala> val  c = new Config(_) 
c: String => Example = <function1>

scala> c.asInstanceOf[Example]
java.lang.ClassCastException: $anonfun$1 cannot be cast to Example
  ... 42 elided

您正在尝试将函数 Config =&gt; Configuration 转换为配置。

查看Play's documentation,您会发现获取配置实例的多种选择。

Configuration.empty 可能是一个开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    相关资源
    最近更新 更多