Java. Всё за жизнь

Written by elwood

Пара маленьких относящихся к миру Java вещей, о которых можно упомянуть.

1. Недавно обнаружил страшный баг в крайней версии IDEA – отладчик частенько не срабатывал на брейпоинтах. Просто пропускал. Удалось даже написать программу для воспроизведения ошибки. См описание бага. Надеюсь, поправят быстро, т.к. отладчик это последняя надежа.

2. Нашел официальное подтверждение хаку с заменой класса локальной версией. Действительно, JVM даёт приоритет тем класс-файлам, которые лежат в элементах ClassPath, описанных ранее. То есть если у вас есть 2 джарника и в каждом из них один и тот же класс, то будет использован тот, который был записан в -cp первым. Так что можно невозбранно форкать классы из либ и патчить их как вздумается. Главное не забыть прописать при запуске classpath в нужном порядке.

Пруф
Тред на stackoverflow

В WAR-архивах это тоже работает, но там в приоритете /WEB-INF/classes, а джарники по идее все равноправны. Но даже приоритет /WEB-INF/classes формально нигде не определён, всё зависит от деталей реализации сервлет-контейнера. Впрочем, в самых популярных это работает.

3. Как поставить бряк на конкретное исключение ?

http://stackoverflow.com/questions/6408596/intellij-idea-how-can-i-create-an-exception-breakpoint-that-stops-on-all-except