а если я хочу написать полностью новый класс, а перезапускать приложение не хочу?
полностью новый класс должен подтянуться без проблем, если он есть в CLASSPATH. Другое дело, что ты этот новый класс ведь начинаешь использовать из уже загруженного кода. Тогда есть варианты.
Ещё другое, если этот класс реализцует какой то компонет который должен быть виден в контейнере - тогда только сброс класслодера. Или JRebel, как написали выше