Java-在JVM启动时加载其他类

Java-在JVM启动时加载其他类,java,class,load,jvm,boot,Java,Class,Load,Jvm,Boot,我想在JVM启动时加载一个额外的类。具体来说,类应该在加载所有核心库之后加载(因此至少在rt.jar和lib/ext之后) 该类未在任何位置引用。它包含一个静态块,用于设置我们希望所有URL连接都使用的JVM范围的代理 我已经尝试了-Xbootclasspath/a,-Xbootclasspath/p选项。将-verbose:class添加到JVM\u OPTS以及由-Xbootclasspath变量创建的加载/打开输出指示所有核心库都已“加载”,而我的JAR只是“打开” 有没有一种方法可以在所

我想在JVM启动时加载一个额外的类。具体来说,类应该在加载所有核心库之后加载(因此至少在
rt.jar
lib/ext
之后)

该类未在任何位置引用。它包含一个静态块,用于设置我们希望所有URL连接都使用的JVM范围的代理

我已经尝试了
-Xbootclasspath/a
-Xbootclasspath/p
选项。将
-verbose:class
添加到
JVM\u OPTS
以及由
-Xbootclasspath
变量创建的加载/打开输出指示所有核心库都已“加载”,而我的JAR只是“打开”


有没有一种方法可以在所有核心类都加载后在JVM启动时强制加载一个类,或者更好的方法是在JAR中加载所有类?

经过研究,我找不到比自定义类加载程序更好的方法了

这是我写的。它固有地为所有类加载方法使用默认类加载器,但提供对非静态初始值设定项的访问,其中可以进行自定义类加载/引用

public class CustomClassLoader extends ClassLoader {

    {
        // Custom class loading goes in this non-static initializer.
        loadClass("java.org.myorganisation.package.MyClass");
    }

    public CustomClassLoader() {
        super(CustomClassLoader.class.getClassLoader());
    }

    public CustomClassLoader(ClassLoader parent) {
        super(parent);
    }
}

当您在回答中编写“自定义类加载在此静态块中进行”时,通过定义系统属性
-Djava.system.class.loader=com.anon.mypackage.CustomClassLoader

指定自定义类加载器。您的意思是只引用要加载的静态类吗?或者你还做了什么?自从你提出这个解决方案已经两年了,你有没有找到更好的方法?@AndrewBate我已经修改了我的描述(这是错误的)和代码,尽管我现在无法测试它,所以如果你有,请告诉我。正如你所提到的,我很久以前就为一个特定的用例写过这篇文章,从那时起就没有尝试过同样的目标,所以没有更好的选择来建议。我甚至不确定非静态初始值设定项是否必要,我本以为您可以在构造函数中调用
loadClass
。。。不过,我还是满怀希望地选择了这种方法,理由很充分:)