NoClassDefFoundError для внутреннего класса

1

Итак, я обнаружил, что это очень распространенная проблема для новых Java-программистов. Но сегодня я впервые столкнулся с этим, после восьми месяцев программирования на Java. И это полностью остановило всю эту работу, пока я не смогу ее решить. Прежде чем идти дальше, пожалуйста, поймите, что я не могу опубликовать полный код в моей программе, просто потому, что он слишком велик для stackoverflow. Основная часть - более 1600 строк и не включает в себя два десятка других файлов, которые он импортирует. Тем не менее, я не думаю, что будет необходимо, чтобы код был отправлен здесь, как я объясню.

Эта программа отлично работает уже довольно давно. Вчера вечером я немного изменил макет Swing и, наконец, получил шанс попробовать его сегодня утром, когда я получил эту ошибку. Тонкая настройка, которую я сделал, может быть снята, но я уверен, что она не связана с этой ошибкой.

Ошибка говорит мне, что это происходит в строке:

private CheckTreeTableSelectionListener selectionListener = new CheckTreeTableSelectionListener();

который находится в списке полей в верхней части класса. Здесь интересный бит: CheckTreeTableSelectionListener - это внутренний класс. Он не является внешним и не импортируется. Кроме того, я не коснулся этого внутреннего класса прошлой ночью, и я не коснулся области, которая создает новый экземпляр. Теперь я понимаю (едва), что сообщение NoClassDefFoundError означает, что определение класса можно найти во время компиляции, но не во время выполнения. Это не помогает. Если это внутренний класс, как его не найти? Это прямо там, внутри класса, который его создает!

Из-за этого планируется запуск этой программы завтра, и теперь я не могу ее развернуть. Есть ли что-нибудь, что я могу сделать, чтобы решить проблему вовремя?

9:59 EDIT: в соответствии с запросом, вот stacktrace. Я не могу опубликовать код, потому что он слишком велик для stackoverflow. Я просто попытался, и это не позволило мне. Итак, вот стоп-трасса, по крайней мере:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: info/chrismcgee/sky/Scheduling$CheckTreeTableSelectionListener
at info.chrismcgee.sky.Scheduling.<init>(Scheduling.java:165)
at info.chrismcgee.sky.Scheduling$2.run(Scheduling.java:204)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassNotFoundException: info.chrismcgee.sky.Scheduling$CheckTreeTableSelectionListener
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 16 more
  • 0
    Можете ли вы показать всю трассировку стека и код, пожалуйста?
  • 0
    Если вы столкнетесь с NoClassDefFound, вы должны проверить, есть ли такой класс в вашем classpath?
Показать ещё 18 комментариев
Теги:
swing
noclassdeffounderror

1 ответ

4
Лучший ответ

В Eclipse IDE какой-то класс волшебным образом исчезает. Вы можете попробовать Project → Clean, чтобы перестроить все.

  • 0
    +1, иногда лучший способ - это сделать :)
  • 1
    То же самое в IntelliJ IDEA. Очистить и восстановить проект решил ту же проблему для меня.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню