我试图在scala中通过unboundid使用LDAP,但编译器一直在崩溃。
我刚刚创建了一个如下所示的对象:
package utils
import com.unboundid.ldap.sdk._
object LdapHelper {
val ldap = LDAPConnection("ldap.example.com", 389)
}
我添加了这个:“com.unboundid”%“unboundid-ldapsdk”%“2.3.1”到我在Build.scala中的appDependencies。我使用Play 2.1和Scala版本2.10.1。
我收到一条非常奇怪的错误消息(见下文):
错误信息太奇怪了,我真的不知道从哪里开始寻找提示。 不确定问题是否在unboundid,play,scala,sbt?
如何在我的scala项目中成功集成unboundid?
由于
Scala编译器出错:断言失败:编译时:C:\ play \ todolist \ app \ utils \ LdapHelper.scala阶段:global = typer,atPhase =解析器库版本:版本2.10.2编译器版本:版本2.10 .2 reconstructed args:-classpath C:\ play \ todolist.target; C:\ eclipse \ scala-SDK-3.0.1-vfinal-2.10-win32.win32.x86_64 \ configuration \ org.eclipse。
...
最后一个树到typer:Ident(LDAPConnection) 符号:(标志:) 符号定义: 符号所有者: 上下文所有者:值ldap - >对象LdapHelper - > package utils
==封闭模板或块==
模板(// val:在对象LdapHelper中 “java.lang.Object”//父母 ValDef( 私人的 “_” ) // 3个陈述 DefDef(// def:在对象LdapHelper中 “” [] 列表(无) 块( 应用( 超。”” 零 ) () ) ) DefDef(// def x:在对象LdapHelper中 “X” [] 零 () ) ValDef(// private [this] val ldap:在对象LdapHelper中 私人的 “LDAP” 应用( “LDAPConnection” // 2个参数 “ldap.example.com” 389 ) ) )
答案 0 :(得分:1)
有一个警告在Scala 2.10.2中变成了一个断言导致这个。
这里有一个错误: https://issues.scala-lang.org/browse/SI-7014
并为2.10.4上演了一个修复: https://github.com/scala/scala/pull/2829
您可以通过使用以下Build.scala来让Play使用Scala 2.10.4-SNAPSHOT:
import sbt._
import Keys._
import play.Project._
object ApplicationBuild extends Build {
val appName = "AppName"
val appVersion = "1.0-SNAPSHOT"
val mainDeps = Seq(
jdbc,
anorm,
cache
)
lazy val main = play.Project(appName, appVersion, mainDeps).settings(
scalaVersion := "2.10.4-SNAPSHOT"
)
}
如果您使用build.sbt,该文件将如下所示:
import play.Project._
playScalaSettings
name := "AppName"
version := "1.0-SNAPSHOT"
scalaVersion := "2.10.4-SNAPSHOT"
libraryDependencies ++= Seq(jdbc, anorm, cache)
注意:如果从sbt(而不是play)构建,则可能需要在scalaVersion行下添加存储库解析程序,例如:
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/repo/"
答案 1 :(得分:1)
@jeckhart的答案有效。
首先,我使用Scala 2.10.4-RC1构建Play 2.3 SNAPSHOT。然后使用输出使用UnboundID进行编译。
最后一切都没有断言或错误。
使用Scala 2.10.4-RC1构建Play 2.3 SNAPSHOT,我修改了文件框架/ project / Build.scala。
从
更改这两部分 val buildScalaVersion = propOr("scala.version", "2.10.3")
val buildScalaVersionForSbt = propOr("play.sbt.scala.version", "2.10.3")
到
val buildScalaVersion = propOr("scala.version", "2.10.4-RC1")
val buildScalaVersionForSbt = propOr("play.sbt.scala.version", "2.10.4-RC1")