aboutsummaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/system/ForceLoad.java
blob: 6869fdfaf5ca568d164c5a56eb2586eb810e0684 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.system;

/**
 * Utility class used to force the loading of other classes.
 */
public class ForceLoad {

    /**
     * Force the loading of the given classes. If any of the named
     * classes can not be loaded, an error will be thrown.
     *
     * @param packageName the name of the package for which we want to forceload classes.
     * @param classNames array of names of classes (without package prefix) to force load.
     */
    public static void forceLoad(String packageName, String[] classNames, ClassLoader loader) throws ForceLoadError {
        String fullClassName = "";
        try {
            for (String className : classNames) {
                fullClassName = packageName + "." + className;
                Class.forName(fullClassName, true, loader);
            }
        } catch (Exception e) {
            throw new ForceLoadError(fullClassName, e);
        }
    }

}