Как использовать Scala в IntelliJ IDEA (или: почему так сложно получить работающую IDE для Scala)? - PullRequest
48 голосов
/ 19 апреля 2010

Я недавно прекратил попытки использовать 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. Смотри ниже ...

UPDATE

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

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

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

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

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

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

Вот оно:

Скалярная внутренняя ошибка: класс 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 (собственный метод), java.lang.Class.forName (Class.java:169), org.jetbrains.plugins.scala.compiler.rt.ScalacRunner.main (ScalacRunner.java). : 72)] * 1 033 *

ФИНАЛЬНОЕ ОБНОВЛЕНИЕ

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

Ответы [ 9 ]

20 голосов
/ 22 апреля 2010

Я столкнулся с той же скалярной ошибкой при попытке запустить проект 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») в поле со списком «Использовать путь к классу и JDK модуля». Когда я запускаю конфигурацию, я получаю ту же ошибку, о которой вы сообщили («Внутренняя ошибка Scalac: класс java.lang.ClassNotFoundException»).

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

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

UPDATE:

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

10 голосов
/ 20 апреля 2010

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

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

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

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

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

6 голосов
/ 20 апреля 2010

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

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

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

2 голосов
/ 07 июня 2010

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

1 голос
/ 20 апреля 2010

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

0 голосов
/ 26 августа 2011

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

0 голосов
/ 26 января 2011

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

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

0 голосов
/ 17 мая 2010

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

0 голосов
/ 19 апреля 2010

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

...