Как мне работать с ClassNotLoadedException во время отладки?

Поэтому я (удаленно) отлаживаю приложение java / jboss в Eclipse, переходя по строкам. В какой-то момент массив объектов GridSquare ( GridSquare – довольно простой, автономный class, содержит несколько свойств и методов) создается вызовом метода, то есть:

GridSquare[] squares = this.theGrid.getSquares(14, 18, 220, 222);

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

org.eclipse.debug.core.DebugException: com.sun.jdi.ClassNotLoadedException: Type has not been loaded occurred while retrieving component type of array.

… Кто-нибудь знает, что это значит?

В основном это означает, что загрузчик classов не загрузил class GridSquare []. Говорят, что это похоже на ошибку в отладчике. Связь точки прерывания с кодом, по-видимому, немного нарушена. Либо вам нужно перекомпилировать, чтобы получить номера строк в синхронизации, либо какая-то другая проблема продолжается. В этот момент кода (после назначения) его необходимо загрузить. Если getSquares фактически возвращает подclass (GridSquareSubclass []), в этот момент JVM может не загрузить его, потому что он ему не нужен (пока).

Я столкнулся с этой ошибкой, потому что я выполнял единичный тест по коду, который использует reflection. Я сделал специальный class для тестирования всех функций кода. Junit явно использует отдельный загрузчик classов для тестовых classов (что имеет смысл), поэтому мой код не смог использовать reflection в этом classе. Трассировка стека, которую я получил, была чрезвычайно обобщенной (java.lang.InstantiationException), но когда я проверил режим отладки, было больше деталей самого объекта Exception (org.eclipse.debug.core.DebugException: com.sun.jdi.ClassNotLoadedException) что привело меня к такому выводу.

Поэтому я переместил специальный class в основной загрузчик classов (перемещая файл из src / test / java в src / main / java), и он отлично работал. Мне не нравится это решение, но я не могу найти альтернативы. В моем случае это не имеет большого значения, но я вижу, как это может быть проблемой для других.

Я видел это в Eclipse, когда у вас есть переменные classа подclassа, скрывающие переменные родительского classа. Каким-то образом это путает Eclipse (и вообще это плохая идея). Например:

 class A { private String a; } class B extends A { public String a; } 
 //Give a SIZE to the array: GridSquare[] squares = GridSquare[this.theGrid.size()]; //Fill each element of the array with the object constructor to avoid the null value for(int i=0; i 

Инициализация GridSquare решит проблему. squares = new GridSquare ();

Я столкнулся с той же проблемой, я только что создал публичный статический основной метод void, создал объект того же типа и Run As java Application, затем удалил основной метод, теперь он отлично работает.

  • Какое имя следует отнести к отладке, добавляя выражения «print»
  • «В настоящий момент точка останова не будет удалена. Исходный код отличается от исходного. «Что это значит?
  • Есть что-то вроде «Firebug для IE» (для отладки JavaScript)?
  • Как отладить скрипт Greasemonkey с расширением Firebug?
  • Как я могу отладить мое приложение Meteor с помощью WebStorm IDE?
  • Как напечатать полное значение длинной строки в gdb?
  • gprolog: получение stacktrace после исключения
  • Spring RestTemplate - как включить полную отладку / протоколирование запросов / ответов?
  • Отладка java-приложения без запуска JVM с аргументами отладки
  • Как отладить программу MPI?
  • Что такое «Async Pinned Handle»?
  • Interesting Posts

    Установка пакета электронной почты python 3.4.0: ImportError: нет модуля с именем ‘cStringIO’

    «Const correctness» в C #

    Импортируйте закладки Google Chrome из Windows в Mozilla Firefox в Ubuntu

    Wix – Как запустить / установить приложение без интерфейса

    Графики для Android

    Как подключить отладчик к IIS вместо ASP.NET Development Server?

    Удалить все строки в Notepad ++, кроме строк, содержащих нужное мне слово?

    Получение запроса полезной нагрузки из запроса POST в Java-сервлете

    wordwrap очень длинная строка

    Windows 10 сжимает несколько кнопок, этикеток и прочее, но большинство из них в целом отлично

    Как сравнивать CDI и EJB? взаимодействовать?

    Один или несколько ресурсов имеют цель «голова», но не «головной» компонент был определен в представлении

    Вызов «WebMethod» с jQuery в ASP.NET WebForms

    Предотвращение автоматического открытия Chrome автоматически загруженных файлов PDF и изображений

    Как преобразовать обычный Java-проект в intellij в проект JavaFx

    Давайте будем гением компьютера.