2014-08-30 3 views
0

Я создал папку libs и разместил там scalascriptengine-1.3.9-2.11.0.jar. После этого я щелкнул правой кнопкой мыши по .jar и выбрал Add Library.Как добавить библиотеку ScalaScriptEngine в IntelliJ Idea

Затем я создал Test.scala:

import java.io.File 

import com.googlecode.scalascriptengine.ScalaScriptEngine 

object Test { 
    def main(args: Array[String]): Unit = { 
    val sourceDir = new File("examples/folder") 
    val sse = ScalaScriptEngine.onChangeRefresh(sourceDir) 
    } 
} 

Это правильно распознан ScalaScriptEngine или, по крайней мере, это не дает никаких предупреждений или ошибок. Но это не скомпилировалось.

Согласно library page я отредактировал мой build.sbt:

name := "ScalaScriptEngineTest" 

version := "1.0" 

libraryDependencies += "com.googlecode.scalascriptengine" %% "scalascriptengine" % "1.3.10" 

libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.11.1" 

Но на освежающий, я получаю это: http://pastebin.com/GdirttUJ

Что мне не хватает? Я учусь Скала и это первый раз, когда я пытаюсь добавить библиотеку к IntelliJ Idea ...

ответ

1

Короткий ответ:

Измените две записи зависимостей в вашей build.sbt следующим образом:

libraryDependencies += 
    "com.googlecode.scalascriptengine" % "scalascriptengine" % "1.3.9-2.10.3" 

libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.10.4" 

Уведомление Я не просто изменил версии - я заменил ваш %% на один%.

В результате вы используете немного устаревшую версию ScalaScriptEngine, и я не знаю, вызовет ли это какие-либо проблемы для вас.

Если вы используете зависимости sbt build, вам не нужно вручную размещать банки в любом месте.

Объяснение:

Из вашего журнала я вижу, что SBT ищет ScalaScriptEngine для Scala 2.10. На самом деле, довольно ясно, что вы используете Scala 2.10.4, хотя ваш файл sbt выражает зависимость от компилятора 2.11, что на самом деле согласуется с инструкциями по использованию ScalaScriptEngine.

В строке 23 журнала вы можете видеть, где именно он находится. Если вы укажете свой браузер частично на that path, вы увидите, что есть версия для Scala 2.11 и другая директория, scalascriptengine, без квалификатора версии. Если вы погрузитесь в последний, вы увидите, что там хранятся все старые версии. Не существует ScalaScriptEngine 1.3.10 (тот, который вы просили), скомпилированного для Scala 2.10, поэтому ваши параметры, похоже, должны обновиться до Scala 2.11 (что я не думаю, что в настоящее время работает, если вы хотите использовать тесную интеграцию IntelliJ Idea с sbt), или вы можете использовать ScalaScriptEngine 1.3.9.

У вас в основном такая же проблема с вашей зависимостью от компилятора Scala - ей нужна версия Scala, которую вы используете.

Я подтвердил вышеуказанное решение с помощью Scala 2.10.4. Я играю его немного быстро и свободно, потому что нет версии для скомпилированных версий для 2.10.4, и я играл в азартные игры, что сборка 2.10.3, вероятно, сработает.

Альтернатива:

Там может быть чист способом решить эту проблему, но, как организовано хранилище заставляет меня сомневаться в этом.

Вы можете создать версию по вашему выбору с помощью компилятора по вашему выбору или убедить сообщество ScalaScriptEngine выполнить его для вас и поместить в Центральный репозиторий, но я предполагаю, что 1.3.10 не будет строить с ничего ниже Scala 2.11.

И наконец, если вы хотите загрузить баночки вручную, вы можете прочитать раздел «Неуправляемые зависимости» в sbt documentation. На самом деле, если вы собираетесь использовать sbt, просто прочитайте все это несколько раз.

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