首页 文章

在scala中使用unboundid ldap ...奇怪的编译错误

提问于
浏览
1

我试图通过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重建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)符号:(flags :)符号定义:符号所有者:上下文所有者:value ldap - > object LdapHelper - > package utils

==封闭模板或块==

Template(// val:in object LdapHelper“java.lang.Object”// parents ValDef(private“_”)// 3语句DefDef(// def:in object LdapHelper“”[] List(Nil)Block(Apply (超 . “”Nil)()))DefDef(// def x:in object LdapHelper“x”[] Nil())ValDef(// private [this] val ldap:in object LdapHelper private“ldap”Apply( “LDAPConnection”// 2参数“ldap.example.com”389)))

2 回答

  • 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

    @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")
    

相关问题