Подтвердить что ты не робот

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

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

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

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

Но это было вчера с IDEA 9.0.1. См. Ниже...

UPDATE

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

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

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

Создан новый класс:

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

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

Вот он:

Внутренняя ошибка Scalac: класс java.lang.ClassNotFoundException [java.net.URLClassLoader $1.run(URLClassLoader.java:202), java.security.AccessController.doPrivileged(собственный метод), java.net.URLClassLoader.findClass( URLClassLoader.java:190), java.lang.ClassLoader.loadClass(ClassLoader.java.307), sun.misc.Launcher $AppClassLoader.loadClass(Launcher.java:301), java.lang.ClassLoader.loadClass(ClassLoader.java: 248), java.lang.Class.forName0 (Native Method), java.lang.Class.forName(Class.java:169), org.jetbrains.plugins.scala.compiler.rt.ScalacRunner.main(ScalacRunner.java: 72)]

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

UPDATE:

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

У меня была аналогичная проблема, следуя this инструкции в блоге, решили проблему для меня