Недавно я решил использовать BouncyCastle для SSL, но хотел, чтобы он отключился по умолчанию, поэтому jar BouncyCastle может отсутствовать в пути к классам.
Код: Выделить всё
private void enableBouncyCastleForSSL() {
if (config.isBouncyCastleEnabled()) {
Security.insertProviderAt(new BouncyCastleProvider(), 1);
}
}
Я попробовал переместить только строку Security.insertProviderAt(new BouncyCastleProvider(), 1); при использовании нового метода возникла та же проблема.
Но когда я представляю класс и перемещаю в него BouncyCastle, когда конфигурация отключена, проблема с загрузчиком классов не появляется.
Код: Выделить всё
private void setupSSLProvider() {
if (voldemortConfig.isBouncyCastleEnabled()) {
SetupSSLProvider.useBouncyCastle();
}
}
public class SetupSSLProvider {
public static void useBouncyCastle() {
Security.insertProviderAt(new BouncyCastleProvider(), 1);
}
}
Очевидно в моем случае Java8 загружает класс, на который есть ссылка в классе.
Я так понимаю, что Java загружает классы на один уровень глубже, прежде чем выполнять первую строку кода в классе. Это правда?
Подробнее здесь: https://stackoverflow.com/questions/342 ... ass-loaded
Мобильная версия