这让我发疯 - 我正在玩 scala、社会安全等,当我尝试制作案例课程时,我不断收到这个错误。
编辑:与此类似的问题:Scala and Play2: ClassCastException: java.lang.Object cannot be cast to play.api.libs.json.JsValue
编辑:将方法 createIdentityFromUser 移动到静态伴随类似乎可以解决这个问题。不知道为什么。
[ClassCastException: java.lang.Object cannot be cast to securesocial.core.SocialUser]
In /Users/tripled153/Development/src/Foundation/playApp/app/service/SecureSocialUserService.scala at line 58.
54// }
55
56 println("here2")
57 //val ret = user.map(_.createIdentityFromUser)
58 user.foreach(x => x.createIdentityFromUser)
59 user match{
60 case Some(x) => Some(x.createIdentityFromUser)
61 case None => None
第 42 行错误。地图、foreach 和 match 所有的炸弹都带有 classcastexception,我不明白为什么。
下面是为了便于阅读而对代码进行了一些清理(注意 SocialUser 扩展了 Identity trait):
def find(id: UserId): Option[Identity] = {
if ( Logger.isDebugEnabled ) {
Logger.debug("find users = %s".format(users))
}
//Option[GraphedUser]
val user = GraphedUser.getUser(id.id)
//ret should be Option[SocialUser]
val ret = user.map(_.createIdentityFromUser) //errors!
return ret
}
以及被调用以产生似乎是问题的对象的方法。它具有扩展 tinkerpop 框架 VertexFrame 接口的特征。我猜这与它有关。
def createIdentityFromUser: SocialUser = {
return new SocialUser(new UserId(getUserId, getProviderId), getFirstName, getLastName, getName, Some(getEmail),
None, new AuthenticationMethod("userPassword"), None, None, Some(new PasswordInfo(getPasswordInfoHash, getPasswordInfoSalt)))
}