Как использовать 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 (думаю, скриншоты доказывают, что они действительно протестировали эту версию!). Теперь все работает!!!
Ответы
Ответ 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 инструкции в блоге, решили проблему для меня