Search code examples
javaclassloaderstatic-initialization

How can I initialize a class that was dynamically loaded with a custom class loader?


Suppose I have a class that is loaded using a custom class loader

Class<?> clz = myClassLoader.loadClass("classLoaders.Test");

How can I initialize the class (run its static initializers) without creating an instance, knowing its members, or using reflection?


Solution

  • To make sure a class is initialized, call Class.forName(String name, boolean initialize, ClassLoader loader) with a true value for the initialize parameter.

    Class<?> clz = Class.forName("classLoaders.Test", true, myClassLoader);