Как использовать Scala в IntelliJ IDEA (или: почему так сложно получить рабочую IDE для Scala)?

недавно я отказался от попыток использовать Scala в Eclipse (основные вещи, такие как завершение, не работают). Итак, теперь я пытаюсь IntelliJ. Я не очень далеко продвинулся.

я смог редактировать программы (в пределах подсветки синтаксиса и завершения... ура!). Но я не могу запустить даже самый простой "Hello World". Это была первоначальная ошибка:

Scala signature Predef has wrong version
Expected 5.0
found: 4.1 in .... scala-library.jar

но это было вчера, с идеей 9.0.1. Увидеть ниже...

обновление

Сегодня Я удалил IntelliJ 9.0.1 и установил раннюю доступность 9.0.2 с 4/14 стабильной версией плагина Scala.

затем я настраиваю проект с нуля через мастера:

  • новый проект с нуля
  • JDK-1.6.U20 в
  • примите значение по умолчанию (project) вместо global / module
  • принять загрузку Scala 2.8.0beta1 в папку lib проекта

создал новую класс:

object hello {
  def main(args: Array[String]) {
    println("hello: " + args);
  }
}

для моих усилий у меня теперь есть совершенно новая ошибка:)

вот это:

внутренняя ошибка Scalac: класс java.ленг.ClassNotFoundException [Ява.чистая.Urlclassloader, на$1.запустить(urlclassloader, на.Ява:202), на Java.безопасность.AccessController.doPrivileged(родной способ), Ява.чистая.Urlclassloader, на.findClass(urlclassloader, на.Ява:190), на Java.ленг.загрузчик классов.loadClass (загрузчик классов.java: 307), sun.разное.Launcher$AppClassLoader.loadClass (пусковая установка.java: 301), Ява.ленг.загрузчик классов.loadClass (загрузчик классов.java: 248), java.ленг.Класс.forName0 (собственный метод), java.ленг.Класс.forName (Class.java: 169), org.в JetBrains.подключаемый модуль.скала.компилятор.РТ.ScalacRunner.main (ScalacRunner.java: 72)]

ОКОНЧАТЕЛЬНОЕ ОБНОВЛЕНИЕ

Я удалил 9.0.2 EA и переустановил 9.0.1, но на этот раз пошел с версией 2.7.3 Scala, а не по умолчанию 2.7.6, потому что 2.7.3 показан на скриншотах на веб-сайте IntelliJ (я думаю, что screen-shots доказывают, что они на самом деле протестировали эту версию!). Теперь все работает!!!

9 ответов


я столкнулся с той же ошибкой scalac при попытке запустить проект Scala в Intellij Idea 9.0.2, и мне удалось найти решение случайно :). Вот шаги, которые я предпринял при создании проекта и его запуске.

Я создал проект Scala в IntelliJ Idea 9.0.2 final (он был выпущен сегодня). Я установил плагин Scala, перезапустил IDE и создал новый проект Scala (с именем "TestScala") с помощью scala-2.8.0.Beta1 как библиотека проектов. Как только проект создан и библиотеки scala загружены, я создал тест.файл Scala со следующим содержимым:

object Test  {
 def main(args:Array[String]){
   println("hello")
 }
}

после этого я создал конфигурацию запуска ("редактировать конфигурации"), выбрав шаблон" приложение". Я устанавливаю в качестве основного теста класса и выбираю имя проекта ("TestScala") в поле со списком" использовать classpath и JDK модуля". Когда я запускаю конфигурацию, я получаю ту же ошибку, что и вы сообщили ("Внутренняя ошибка Scalac: класс Ява.ленг.ClassNotFoundException") .

теперь идет причудливая часть :). Я нажимаю правой кнопкой мыши на проект, выбираю "настройки модуля", смотрю на все настройки, но ничего не меняется . Нажмите "Применить" и "ОК", попробуйте запустить конфигурацию еще раз и он работает :) .

Я использую Intellij Idea 9.0.2 окончательный выпуск (build 95-66); Ubuntu 9.10 и JDK 1.6.0_18. Я также должен упомянуть, что у меня был JDK, настроенный в Intellij, иначе есть дополнительный шаг для его настройки.

обновление:

при проверке настройки модуля необходимо нажать на кнопку Модуль - >Scala и фасеты - >Scala (разверните его и нажмите на Scala (ProjectName)) . Оба эти параметра касаются компилятора scala и расположения библиотеки scala. Я бы предположил, что эти значения неправильно установлены при создании проекта, но сохраняются после того, как пользователь коснется их и сохранит настройки.


чтобы ответить на ваш вопрос, трудно получить рабочую IDE для Scala по двум причинам: (a) Scala только начинает охватывать широкую аудиторию и (b) из-за (a) нет никаких деловых оснований для траты времени на Scala IDE.

кроме того, если вы достаточно стары, чтобы отбросить свой ум назад и достаточно молоды, чтобы все еще помнить, вы знали бы, что в течение первых пяти или более лет Java мы застряли с окей-иш инструментами, такими как JBuilder, которые сделали немного больше, чем скомпилировали ваш код, когда вы так сказали - нет подсветки ошибок, нет автоматического импорта, и слово рефакторинг даже не существует. Если вы хотите стать первопроходцем, вы должны быть готовы отрезать часть дороги самостоятельно или, по крайней мере, Буш-Баш.

Я знаю, что это не поможет вам, но я успешно использовал идею для Scala на Linux, Mac и Windows. Обычно я устанавливаю Scala SDK где-то локально и указываю на это, а не использую опцию "загрузить".

в настоящее время я, в основном, с помощью EAP версия IDEA 9 на Mac OS X с Scala 2.8.0.Beta1-RC5 и он работает хорошо (за исключением того, что fsc, похоже, не работал со смешанными источниками).

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


установка плагина является обязательным условием.

следующее, что вам нужно сделать, это определить библиотеку (глобальную или конкретную для проекта; я использую global), которая содержит библиотеку Scala и файлы jar компилятора (как минимум, это scala-compiler.jar и scala-library.jar). Добавление исходных банок и банка документации или URL-адресов-тоже хорошая идея. Затем сделайте эту библиотеку зависимостью от любых модулей в вашем проекте, которые включают код Scala.

наконец, найдите грани Scala в тех модули и снимите оба флажка.


Я только что сделал новую установку и имел точно такую же проблему сам. Оказалось, что, поскольку я создал файл в корневом пакете, IDEA добавила оператор package вверху с именем пакета. Я предполагаю, что это затем было скомпилировано как "основной объект пакета" - допустимый синтаксис в 2.8? Во всяком случае, я удалил строку, в которой говорилось о пакете, и все сработало нормально.


У меня была та же проблема вчера, когда я пытался ее настроить. Решение довольно простое, вам просто нужно установить scala где-то в настройках проекта.


вы смешиваете код, скомпилированный с двумя разными версиями Scala.


Я использую Netbeans для написания программ scala. Пока это очень хорошо работает с моими кодами. Вы можете попробовать плагин здесь:http://wiki.netbeans.org/Scala68v1.


Я получал эту ошибку, а также должен был щелкнуть правой кнопкой мыши по проекту и "открыть Настройки модуля". Однако это было нечто большее, чем просто удар. Я должен был убедиться, что мой корень контента был правильным для каждого проекта. По какой-то причине были некоторые неправильные исходные и тестовые папки.

мой проект использует maven в качестве основного инструмента сборки, и импорт проекта в Intellij, вероятно, создал эти неправильные настройки.


У меня была похожая проблема, после этой инструкции по записи в блоге решили проблему для меня