Wann wird eine Java-Klasse geladen?Java

Java-Forum
Guest
 Wann wird eine Java-Klasse geladen?

Post by Guest »

Ich habe mehr als ein paar Stunden im Internet gesucht und bin zu keinem Ergebnis gekommen.

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);
}
}
Selbst wenn die Konfiguration deaktiviert war, suchte sie nach BouncyCastle und schlug mit einem Klassenladefehler fehl. java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider

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);
}
}
Einige Artikel behaupten, dass die Klasse nur geladen wird, wenn sie zum ersten Mal verwendet wird. http://www.programcreek.com/2013/01/whe ... itialized/

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?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post