1

Я пытаюсь использовать LDAP через unboundid в scala, но компилятор продолжает сбой.Использование unboundid ldap в scala ... странная ошибка компиляции

Я только что создал объект, который выглядит следующим образом:

package utils 

import com.unboundid.ldap.sdk._ 

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

я добавил это: "com.unboundid" % "unboundid-ldapsdk" % "2.3.1" для моих appDependencies в Build.scala. Я использую Play 2.1 и Scala Version 2.10.1.

я получаю сообщение об ошибке очень странное (см):

сообщения об ошибке настолько странно, что я действительно не знаю, где начать искать подсказки. Не уверен, что проблема в unboundid, play, scala, sbt?

Как я могу успешно интегрировать unboundid в свой проект scala?

Благодаря


Ошибка в Scala компиляторе: утверждение не удалось: во время компиляции: C: \ игры \ ToDoList \ приложение \ Utils \ LdapHelper.scala во время фазы: глобальная = машинка, АТФазная = библиотека парсер версия: версия 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: Ident (LDAPConnection) символ: (флаги:) символ определение: владельцев символа: владельцы контекста: значение - LDAP> объект LdapHelper -> пакет Utils

== Ограждающие шаблон или блок ==

шаблона (// Вэл: в объекте LdapHelper "java.lang.Object" // родители ValDef ( частный "_" ) // 3 заявления DefDef (// DEF: в объекте LdapHelper "" [] List (Nil) Блок ( Применить ( супер. "" Nil ) () ) ) DefDef (// защиту х: в объекте LdapHelper "х" [] Ноль () ) ValDef (// частное [это] вал 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

Вы можете попросить Play использовать Scala 2.10.4-SNAPSHOT с помощью следующей Build. Скала:

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.

И наконец, все компилируется без каких-либо утверждений или ошибок.

Чтобы создать Play 2.3 SNAPSHOT с помощью Scala 2.10.4-RC1, я изменил файловую структуру/проект/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") 
Смежные вопросы