Почему исключение в потоке "main" java.lang.NoClassDefFoundError :? - PullRequest
7 голосов
/ 25 мая 2011

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

Exception in thread "main" java.lang.NoClassDefFoundError: coloredtrails/CTListener
    at test.DemoPlayer1.createAndShowGUI(DemoPlayer1.java:23)
    at test.DemoPlayer1.main(DemoPlayer1.java:39)
Caused by: java.lang.ClassNotFoundException: coloredtrails.CTListener
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 2 more

Почему он не видит класс?Что может быть причиной этого?Как я могу решить проблему?

Ответы [ 2 ]

9 голосов
/ 25 мая 2011

A NoClassDefFoundError (почти) всегда означает, что ваш путь к классу неверен.Убедитесь, что ваш classpath содержит базовый каталог пакета coloredtrails.(Конечно, также убедитесь, что файл coloredtrails\CTListener.class действительно существует).

При запуске из командной строки:

Вы можете установить classpath, установив переменную среды CLASSPATH, илиуказав его с параметром -cp или -classpath в командной строке при запуске вашей программы.Например:

java -cp C:\MyProject\classes coloredtrails.CTListener

edit - Глядя на трассировку стека и видя URLClassLoader, я думаю, что вы пытаетесь запустить Java-апплет.Чтобы узнать, как правильно развернуть апплеты, чтобы найти все классы, которые нужны апплету, см. Этот учебник: Развертывание апплета .

6 голосов
/ 11 сентября 2012

Иногда мой Eclipse (Indigo в MacOSX) делает это, особенно если я делаю изменения (удаляю файлы, перемещаю их) непосредственно в структуру проекта в файловой системе.

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

Чтобы исправить это, удалите исходную папку из пути сборки (= щелкните правой кнопкой мыши на папке src под проектом в проводнике пакетов, затем выберите «Build-path-> Remove from Build-path». Затем добавьте ее снова (=щелкните правой кнопкой мыши папку под проектом в проводнике пакетов и выберите «Добавить в путь компоновки»). Это снова сделает папку src «видимой» для компилятора и решит проблему.

...