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")
}
}
Ответы
Ответ 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.