1

我正在尝试通过 scala 中的 unboundid 使用 LDAP,但编译器不断崩溃。

我刚刚创建了一个如下所示的对象:

package utils

import com.unboundid.ldap.sdk._

object LdapHelper {
  val ldap = LDAPConnection("ldap.example.com", 389)
}

我在 Build.scala 中的 appDependencies 中添加了这个:“com.unboundid”%“unboundid-ldapsdk”%“2.3.1”。我使用 Play 2.1 和 Scala 版本 2.10.1。

我收到一条非常奇怪的错误消息(见下文):

错误信息太奇怪了,我真的不知道从哪里开始寻找提示。不确定问题是否出在 unboundid、play、scala、sbt 中?

我怎样才能成功地将 unboundid 集成到我的 scala 项目中?

谢谢


Scala 编译器中的错误:断言失败:编译时:C:\play\todolist\app\utils\LdapHelper.scala 阶段期间:global=typer,atPhase=parser 库版本:2.10.2 版编译器版本:2.10.2 版重建参数:-classpath C:\play\todolist.target;C:\eclipse\scala-SDK-3.0.1-vfinal-2.10-win32.win32.x86_64\configuration\org.eclipse。

...

键入器的最后一棵树:Ident(LDAPConnection) 符号:(标志:) 符号定义:符号所有者:上下文所有者:值 ldap -> 对象 LdapHelper -> 包实用程序

== 封闭模板或块 ==

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

4

2 回答 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/"

于 2013-10-24T03:56:55.230 回答
1

@jeckhart 的答案有效。

首先,我使用 Scala 2.10.4-RC1 构建 Play 2.3 SNAPSHOT。然后使用输出使用 UnboundID 进行编译。

最后,一切编译都没有断言或错误。

为了使用 Scala 2.10.4-RC1 构建 Play 2.3 SNAPSHOT,我修改了文件 framework/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")
于 2014-01-10T15:10:08.960 回答