Подтвердить что ты не робот

NoClassDefFoundError с использованием Scala Плагина для Eclipse

Я успешно реализовал и провел несколько учебников Scala в Eclipse с помощью плагина Scala. Затем я попытался скомпилировать и запустить пример, и эта ошибка возникла:

Exception in thread "main" java.lang.NoClassDefFoundError: hello/HelloWorld
Caused by: java.lang.ClassNotFoundException: hello.HelloWorld
 at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)

После этой точки я больше не мог запускать какие-либо программы Scala в Eclipse. Я попробовал очистить и восстановить свой проект, закрыть и снова открыть мой проект, а также закрыть и снова открыть Eclipse.

Версия Eclipse версии 3.5.2 и Scala плагин 2.8.0

Вот исходный код:

package hello

object HelloWorld {
 def main(args: Array[String]){
  println("hello world")
 }
}
4b9b3361

Ответ 1

Если вы видите это при попытке запуска в качестве приложения Scala, то наиболее вероятным объяснением является то, что ваш проект не компилировался и файлы классов не были сгенерированы. Проверьте, действительно ли этот случай: посмотрите в выходной папке проекта для hello/HelloWorld.class.

Если ваш проект не был скомпилирован, это может быть связано с тем, что вы пропустили ошибку (и если эта ошибка не сообщается в представлении "Проблемы", которое может быть ошибкой, и в этом случае, пожалуйста, откройте билет на Trac) или потому, что вы отключили автоматические сборки и не выполнили ручную сборку вашего проекта.

Ответ 2

У меня была та же проблема. Проект не компилируется, но нет ошибок, и AFAIK код в порядке. Кажется, что проблема с Run Configurations.

Решение 1: удалите существующую конфигурацию запуска для своего объекта и создайте новую

Решение 2: создайте новый объект и вырежьте/вставьте весь свой код в этот файл

Ответ 3

При запуске "clean" не отключайте Eclipse, я попробую сохранить мою работу, выйти из Eclipse и перезапустить. Обычно это происходит снова, но не всегда. Несколько раз мне приходилось обновлять плагин Scala с более новой версией (я использую последнюю ночную), чтобы снова работать. Я сомневаюсь, что это сработало, потому что новый плагин, чтобы исправить ошибку, а скорее ожидаем, что загрузка нового плагина дает весь Eclipse- Scala система "total reset", которая получает его неактивным.

Ответ 4

Я получал эту проблему в проекте, который объединял файлы .java и .scala. Решение для меня было:

  • Удалить все .java файлы
  • При необходимости отредактируйте код scala, чтобы он компилировался без них.
  • Добавьте файлы .java.
  • Отредактируйте код scala.

Другие решения, приведенные здесь, не помогли мне. Я попробовал: очистить проект, перезапустить Eclipse, закрыть & -открыть проект, создав новый .scala файл. Нет радости.

Я использую Eclipse 3.7 (последняя стабильная версия), scala IDE 2.0.0 и scala 2.9 на Ubuntu Linux 11.10.

Симптомы в моем случае были:

  • Мой проект работал, но потом он прекратил компиляцию без видимых причин. В IDE не было обнаружено ошибок компиляции для .scala файлов, но в выходном каталоге не было файлов .class, и я получил NoClassDefError, если я пытался что-либо запустить.
  • Если я создал преднамеренную ошибку в файле .scala, это было воспринято как ошибка компиляции.
  • Файлы .java регистрировали ошибки из-за отсутствующих классов scala.

Я предполагаю, что в плагине IDE, возможно, есть загрузочная ошибка для микширования .java/.scala. Я сделал гибридные проекты с этой настройкой без проблем, поэтому он запускался только в некоторых ситуациях. Я не знаю, что такое триггер, но после его запуска нет хорошего решения.

Ответ 5

Я перенес один и только класс/объект/приложение в пакет, но не добавил объявление package.

sbt скомпилирован и работает нормально; Eclipse не будет

Добавление объявления package в верхней части файла исправлено.

Scala 2.8.3 плагин; ошибка компиляции

Ответ 6

Я тоже столкнулся с этой ошибкой, но после выполнения этих предложений (очистка, удаление Run Configuration и т.д.) я понял, что неправильно настроил рабочую область, поэтому класс не найден.

Указание на то, что это проблема, - это когда возникает одна и та же ошибка при попытке скомпилировать проект java.

Ответ 7

Я столкнулся с этой ошибкой (компиляция работала в sbt, но не прошла в eclipse), когда я создал новый объект пакета, называемый "общим". Удаление объекта пакета в eclipse вызвало ошибку компиляции. Ничего в этом не было.

Я использовал sbt-eclipse для создания проекта eclipse. Я использую scala eclipse 3.0.0-vfinal-20130326-1146-Typesafe.