2015-10-13 2 views
0

Мне поручено переписать сценарий старого скрипта сборки для SBT. Как это бывает, наш люкс состоит из 3 модулей:Multiproject SBT создает плохую символическую ссылку scala-reflect runtime

  • Веб-сервер с интерфейсом Play 2.3;
  • Внутренний интерфейс для извлечения данных из других систем;
  • Средний модуль, содержащий некоторые общие классы для доступа к базе данных и бизнес-логики.

Ниже отрывок из моего файла Build.scala можно найти:

val sharedSettings = Seq(
    organization  := <organization here>, 
    version    := "1.2.5", 
    scalaVersion  := "2.11.1", 
    libraryDependencies ++= libraries, 
    unmanagedJars in Compile ++= baseDirectory.value/"lib", 
    unmanagedJars in Compile ++= baseDirectory.value/"src", 
    unmanagedJars in Compile ++= baseDirectory.value/"test" 
) 

lazy val middle = project.settings(sharedSettings: _*) 
lazy val back = project.settings(sharedSettings: _*).dependsOn(middle) 

Однако, когда я пытаюсь компилировать исходники, я получаю следующее сообщение об ошибке:

bad symbolic reference to scala.reflect.runtime encountered in class file 'ValueConverter.class'. Cannot access term runtime in package scala.reflect. The current classpath may be missing a definition for scala.reflect.runtime, or ValueConverter.class may have been compiled against a version that's incompatible with the one found on the current classpath.

Исходный код представлен в следующей форме:

  • назад
    • SRC
    • тест
    • Lib
  • среднего
    • SRC
    • тест
    • Lib
  • спереди
    • ЦСИ
    • тест
    • Lib

Здесь каждый Lib папка содержит некоторые вручную поддерживаемые библиотеки (поэтому мы хотим, чтобы перейти к SBT).

Любые идеи о том, как это решить?

+0

Вы объявляете scala-reflect как библиотечную зависимость? –

+1

Любая причина, по которой вы используете Scala 2.11.1 вместо 2.11.7? Откуда «ValueConverter» - это одна из библиотек, поддерживаемых вручную? Вероятно, он был составлен против старой версии Scala, такой как 2.10? Ключ здесь не «отсутствует scala.reflect.runtime» (как указывает ваш заголовок), но ** плохая символическая ссылка ** –

+0

Я попытался добавить отражение как зависимость, но, к сожалению, это не помогло. – irundaia

ответ

0

В конце концов, я отказался от попытки заставить компилятор понять дополнительные библиотеки. В конце концов я добавил те зависимости, которые были доступны с помощью sbt, в управляемые библиотеки sbt. Это, видимо, хорошо работает.

Смежные вопросы