Как использовать Scala в IntelliJ IDEA (или:почему так сложно получить работающую IDE для Scala)?
-
28-09-2019 - |
Вопрос
Недавно я отказался от попыток использовать Scala в Eclipse (базовые вещи, такие как завершение, не работают).Так что теперь я пробую IntelliJ.Я не очень далеко продвинулся.
Я смог редактировать программы (в рамках подсветки синтаксиса и завершения...ура!).Но я не могу запустить даже простейший "Hello World".Это была первоначальная ошибка:
Scala signature Predef has wrong version Expected 5.0 found: 4.1 in .... scala-library.jar
Но это было вчера с IDEA 9.0.1.Смотрите ниже...
Обновить
Сегодня я удалил IntelliJ 9.0.1 и установил раннюю доступность 9.0.2 со стабильной версией плагина Scala 4/14.
Затем я настраиваю проект с нуля с помощью мастеров:
- новый проект с нуля
- JDK - 1.6.до 20 лет
- примите значение по умолчанию (project) вместо global / module
- примите загрузку Scala 2.8.0beta1 в папку библиотеки проекта
Создан новый класс:
object hello { def main(args: Array[String]) { println("hello: " + args); } }
Благодаря моим усилиям, теперь у меня появилась совершенно новая ошибка :)
Вот оно:
Внутренняя ошибка Scalac:класс java.lang.ClassNotFoundException [java.net.URLClassLoader$1.выполнить (URLClassLoader.java:202), java.security.AccessController.Допривилегированный (собственный метод), java.net.URLClassLoader.FindClass(URLClassLoader.java:190), java.lang.ClassLoader.loadClass(ClassLoader.java:307), sun.разное.Launcher$AppClassLoader.loadClass(Launcher.java:301), java.lang.ClassLoader.loadClass(ClassLoader.java:248), java.lang.Class.forName0(собственный метод), java.lang.Class.forName(Class.java:169), org.jetbrains.плагины.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 (я думаю, снимки экрана доказывают, что они действительно тестировали эту версию!).Теперь все работает!!!
Решение
Я столкнулся с такой же ошибкой scalac при попытке запустить проект Scala в Intellij Idea 9.0.2, и мне случайно удалось найти решение :).Это шаги, которые я предпринял при создании проекта и его запуске.
Я создал проект Scala в Intellij Idea 9.0.2 final (он был выпущен сегодня).Я установил плагин Scala, перезапустил IDE и создал новый проект Scala (с именем "TestScala") с scala-2.8.0.Beta1 в качестве библиотеки проекта.После создания проекта и загрузки библиотек scala я создал файл Test.scala со следующим содержимым:
object Test {
def main(args:Array[String]){
println("hello")
}
}
После этого я создал конфигурацию запуска ("Редактировать конфигурации"), выбрав шаблон "Приложение".Я устанавливаю в качестве основного класса Test и выбираю название проекта ("TestScala") в поле со списком "Использовать classpath и JDK модуля".Когда я запускаю конфигурацию, я получаю ту же ошибку, о которой вы сообщили ("Внутренняя ошибка Scalac:класс java.lang.ClassNotFoundException") .
Теперь начинается самая странная часть :).Я щелкаю правой кнопкой мыши по проекту, выбираю "Настройки модуля", просматриваю все настройки, но Я ничего не меняю .Нажмите "применить" и "ок", попробуйте снова запустить настройку и это работает :) .
Я использую Intellij Idea 9.0.2 финальной версии (сборка 95-66).;Ubuntu 9.10 и JDK 1.6.0_18.Я также должен упомянуть, что у меня был настроен JDK в Intellij, в противном случае потребуется дополнительный шаг для его настройки.
Обновить:
При проверке настройки модуля необходимо нажать на кнопку Модуль-> Scala и Грани-> Scala (разверните его и нажмите на Scala(имяпроекта)) .Оба этих параметра касаются компилятора scala и расположения библиотеки scala.Я бы предположил, что эти значения неправильно заданы при создании проекта, но сохраняются, как только пользователь прикасается к ним и сохраняет настройки.
Другие советы
Чтобы ответить на ваш вопрос, трудно получить рабочую IDE для SCALA по двум причинам: (а) Scala только начинает достичь широкой аудитории и (B) из-за (а), делают дело для проведения времени на Скала IDE.
Кроме того, если вы достаточно взрослый, чтобы отбрасывать свой разум и достаточно молодо, чтобы до сих пор помнить, вы знаете, что за первые пять или более лет Java, мы застряли с инструментами Alky-ish, как JBuilder, который сделал немного больше, чем компилировать Код, когда вы сказали так - никакой ошибки выделяется, нет автоматического импорта, а слово Refactoring даже не существовало. Если вы хотите пионер, вы должны быть готовы порезать немного дороги самостоятельно или, по крайней мере, Буш-Баш.
Я знаю, что это не поможет вам, но я успешно использовал идею для Scala на Linux, Mac и Windows. У меня обычно есть Scala SDK, установленная где-то локально и точечная идея, а не использовать опцию «скачать».
В настоящее время я в основном использую EAP версия идеи 9 На Mac OS X со Scala 2.8.0.beta1-RC5 и он работает хорошо (за исключением того, что FSC, кажется, не работает со смешанными источниками).
Вы можете попробовать свою удачу в Idey Scala плагин обсуждение форума, Хотя у меня не было большого количества ответов на мои собственные сообщения там.
Установка плагина является обязательным условием.
Следующее, что вы должны сделать, это определить библиотеку (глобальный или проект, специфичный; я использую Global), который содержит библиотеку Scala а также Compiler JAR файлы (как минимум, это scala-compiler.jar
а также scala-library.jar
). Добавление исходных банок и JAR документации или URL-адреса тоже хорошая идея. Затем сделайте эту библиотеку зависимостью любых модулей в вашем проекте, который включает в себя Scala код.
Наконец, найдите грани Scala в этих модулях и де-выберите обе флажки там.
Я только что сделал новую установку и имел именно эту же проблему самостоятельно. Оказалось, что, поскольку я создал файл в корневой упаковке, идея добавила оператор пакета на вершине с именем пакета. Я предполагаю, что это затем скомпилировано как «Объект Package Main» - Допустимый синтаксис в 2.8? В любом случае, я удалил линию, которая сказала пакет, и все это работало нормально.
У меня была такая же проблема вчера, пытаясь настроить это. Решение довольно простое, вам просто нужно установить Scala где-то в настройках проекта.
Вы смешиваете код, собранный двумя разными версиями SCALA.
Я использую NetBeans для написания программ Scala. Пока что это очень хорошо работает с моими кодами. Вы можете попробовать плагин здесь: http://wiki.netbeans.org/scala68v1..
Я получал эту ошибку, а также пришлось щелкнуть правой кнопкой мыши на проекте и «Открыть настройки модуля». Тем не менее, это было больше, чем просто ударить. Мне пришлось убедиться, что мой код содержимого был правильным для каждого проекта. По какой-то причине были неверные исходные и тестовые папки.
Мой проект использует Maven в качестве основного инструмента сборки и импортировать проект в Intellij, вероятно, что создано эти неверные настройки.
У меня была похожая проблема, следующая это Инструкции по сообщениям блога решили проблему для меня