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

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

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

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
  • примите значение по умолчанию (проект) вместо глобального / модуль
  • примите загрузку 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 (Средство запуска java:301), java.lang. ClassLoader.loadClass(ClassLoader.java:248), java.lang. Класс forName0 (Собственный метод), java.lang. Class.forName (Класс java:169), org.jetbrains.plugins.scala.compiler.rt. ScalacRunner.main(ScalacRunner.java:72)]

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

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

48
задан Vadzim 4 December 2013 в 06:00
поделиться

7 ответов

Я столкнулся с той же скалярной ошибкой при попытке запустить проект 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")
 }
}

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

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

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

ОБНОВЛЕНИЕ:

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

20
ответ дан 26 November 2019 в 19:04
поделиться

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

0
ответ дан 26 November 2019 в 19:04
поделиться

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

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

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

6
ответ дан 26 November 2019 в 19:04
поделиться

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

1
ответ дан 26 November 2019 в 19:04
поделиться

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

Кроме того, если вы достаточно взрослые, чтобы вспомнить, и достаточно молоды, чтобы все еще помнить, вы должны знать, что первые пять или более лет 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 , хотя у меня не так много ответов на мои собственные сообщения там.

10
ответ дан 26 November 2019 в 19:04
поделиться

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

0
ответ дан 26 November 2019 в 19:04
поделиться

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

2
ответ дан 26 November 2019 в 19:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: