Vor kurzem habe ich beschlossen, BouncyCastle für SSL zu verwenden, aber ich wollte, dass es vorbei ist Standardmäßig, sodass sich das BouncyCastle-JAR möglicherweise nicht im Klassenpfad befindet.
Code: Select all
private void enableBouncyCastleForSSL() {
if (config.isBouncyCastleEnabled()) {
Security.insertProviderAt(new BouncyCastleProvider(), 1);
}
}
Ich habe versucht, nur die Zeile Security.insertProviderAt(new BouncyCastleProvider(), 1); Bei einer neuen Methode trat das gleiche Problem auf.
Aber wenn ich eine Klasse einführe und das BouncyCastle darin verschiebe und die Konfiguration deaktiviert ist, tritt kein Problem mit dem Klassenlader auf
Code: Select all
private void setupSSLProvider() {
if (voldemortConfig.isBouncyCastleEnabled()) {
SetupSSLProvider.useBouncyCastle();
}
}
public class SetupSSLProvider {
public static void useBouncyCastle() {
Security.insertProviderAt(new BouncyCastleProvider(), 1);
}
}
Anscheinend In meinem Fall lädt Java8 die Klasse, auf die in einer Klasse verwiesen wird.
Soweit ich weiß, lädt Java die Klassen eine Ebene tief, bevor die erste Codezeile in einer Klasse ausgeführt wird. Ist das richtig?