Я недавно бросил пытаться использовать 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.
Затем я устанавливаю проект с нуля через мастера:
Созданный новый класс:
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 (я предполагаю, что снимки экрана доказывают, что на самом деле протестировали эту версию!). Теперь все работает!!!
Я столкнулся с той же скалярной ошибкой при попытке запустить проект 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. Я предполагаю, что эти значения не установлены должным образом при создании проекта, но сохраняются, когда пользователь касается их и сохраняет настройки.
Вы смешиваете код, скомпилированный с двумя разными версиями Scala.
Обязательным условием является установка подключаемого модуля.
Следующее, что вам нужно сделать, это определить библиотеку (глобальную или специфичную для проекта; я использую глобальную), которая содержит файлы JAR библиотеки Scala и компилятора (как минимум, это scala- compiler.jar
и scala-library.jar
). Также неплохо добавить исходные JAR-файлы и JAR-файлы документации или URL-адреса. Затем сделайте эту библиотеку зависимой от любых модулей в вашем проекте, которые включают код Scala.
Наконец, найдите фасеты Scala в этих модулях и снимите там оба флажка.
У меня вчера была та же проблема при настройке. Решение довольно простое, вам просто нужно указать scala где-нибудь в настройках проекта.
Чтобы ответить на ваш вопрос, получить рабочую среду 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 , хотя у меня не так много ответов на мои собственные сообщения там.
Я использую Netbeans для написания программ Scala. Пока что он очень хорошо работает с моими кодами. Вы можете попробовать плагин здесь: http://wiki.netbeans.org/Scala68v1 .
Я только что выполнил новую установку и у меня была точно такая же проблема. Оказалось, что, поскольку я создал файл в корневом пакете, IDEA добавила вверху оператор пакета с именем пакета. Я предполагаю, что это затем было скомпилировано как «объект пакета Main» - действительный синтаксис в 2.8? В любом случае, я удалил строку, в которой говорилось о пакете, и все работало нормально.