Технически, вы можете открыть содержимое исходного JAR, скомпилировать новые источники и собрать новый JAR, заменив старые источники новыми.Однако это было бы очень плохой практикой и очень подвержено ошибкам.Вы рискуете напрасно тратить много времени и приводить к беспорядку в проекте.
Гораздо лучше изменить классы исходного проекта, чтобы можно было заменить реализации классов.Наличие контейнера IOC в проекте может облегчить этот процесс.Вы можете сделать это и без контейнера, например:
class WantToOverride { ... }
class UserOfWantToOverride {
WantToOverride wantToOverride;
public void setWantToOverride(WantToOverride wantToOverride) {
this.wantToOverride= wantToOverride;
}
}
Теперь, во время инициализации вашего проекта, вызовите
userOfWantToOverride.setWantToOverride(new OverridingClass(...))
, где ваш класс
class OverridingClass extends WantToOverride { ... }
Вы также можете наследовать Hibernate-классы, но вам нужно тщательно заботиться о Hibernate Inheritance