Как отладка 'Detail Formatters' разрешает классы в Eclipse? - PullRequest
4 голосов
/ 24 августа 2010

В eclipse вы можете установить пользовательские «Форматировщики деталей» в «Настройки» -> «Java» -> «Отладка» -> «Форматировщики деталей», чтобы печатать объекты настраиваемыми способами при отладке.Я хотел бы использовать служебный класс для печати объекта с использованием средства форматирования, например:

return com.foo.Bar.xzyToString(this);

, где xzyToString - статический метод Bar, возвращающий строку, но затмение жалуется, что оно

'не удалось разрешить тип: com.foo.Bar.xzyToString'.Добавление 'Bar' к пути сборки проекта не позволяет найти класс.Как / где я могу обновить путь, который использует eclipse для разрешения имен в Detail Formatters?

Ответы [ 3 ]

3 голосов
/ 26 августа 2010

Средство форматирования сведений подключается к инфраструктуре Eclipse JDI и использует загрузчик классов класса, который в настоящее время отлаживается.Таким образом, вы можете использовать только те классы, о которых знает ваше запущенное приложение.

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

1 голос
/ 22 января 2014

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

Вы можете обойти это, загрузив класс в средство форматирования - измените свой форматер на следующее:

if ( Class.forName("com.foo.Bar") != null ) {
  return com.foo.Bar.xzyToString( this );
}
else {
  return "Could not load com.foo.Bar in detail formatter!";
}
0 голосов
/ 24 августа 2010

Просто дайте часть после вашего return заявления. Например. для StringBuffer попробуйте:

toString() + " (" + length() + ")"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...