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