1

我想通过scala中的unboundid使用LDAP,但编译器不断崩溃。在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?

如何成功地将unboundid集成到我的scala项目中?

感谢


错误Scala编译器:断言失败:在编译:C:\游戏\ todolist的\程序\ utils的\ LdapHelper.scala阶段期间:全球=打字员,atPhase =解析库版本:版本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。

...

最后一棵树到TYPER:订货号(LDAPConnection) 符号:(标志:) 符号定义: 符号业主: 背景下业主:值LDAP - >对象LdapHelper - >包装utils的

==内附的模板或块==

模板(// VAL:在对象LdapHelper “java.lang.Object继承” //父母 ValDef( 私人 “_” ) // 3语句 DefDef(// DEF:在对象LdapHelper “” [] 列表(无) 块( 应用( 超级。 “” 无 ) () ) ) DefDef(// DEF X:在对象LdapHelper “×” [] 无 () ) ValDef(//私人[此] VAL LDAP:在对象LdapHelper 私人 “LDAP” 应用( “LDAPConnection” // 2个参数 “ldap.example.com” ) ) )

回答

1

有一个警告,在Scala 2.10.2中导致这个问题变成断言。

有开在这里的一个错误: https://issues.scala-lang.org/browse/SI-7014

而且修复上演2.10.4: https://github.com/scala/scala/pull/2829

你可以要求播放使用下面的生成使用Scala的2.10.4快照。斯卡拉:

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(而不是播放)建立可能需要的scalaVersion线下添加存储库解析如: resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/repo/"

+1

感谢您的信息!现在,我结束了使用javax.naming._而不是unboundid。 :)很高兴知道这将在Scala 2.10.4中修复。 – nemoo

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