How to set my custom class loader to be the default?

后端 未结 1 1947
深忆病人
深忆病人 2020-12-06 02:10

I\'m trying to practice myself with custom class loaders, and I\'ve some questions. Is there a way to indicate the JVM to use my custom class loader globally? For example, I

相关标签:
1条回答
  • 2020-12-06 02:17

    You can set the system default class loader as a JVM argument:

    java -Djava.system.class.loader
        =com.test.YourCustomClassLoader com.test.YourMainClass
    

    As Tomcat starts as a java application, you can set this parameter too, at the %TOMCAT_HOME%\bin\run.bat or $TOMCAT_HOME/bin/run.sh executable.

    Edit for completion: If you set your classloader as de System class loader, it will be used to load Tomcat component classes, the different libraries, and your own classes. If you want your class loader to be used only for your application classes (including libraries and so), you should configure a Loader element for your context. The Loader element must be defined inside your Context element, wich can be defined at a context.xml file. More information:

    • Apache Tomcat: Class Loader HOW-TO: defines how the ClassLoaders work in Tomcat.
    • Tomcat Configuration Reference: The Context Container: how to define your Context element
    • Tomcat Configuration Reference: The Loader Component: How to define your custom Loader element for your own Context.
    0 讨论(0)
提交回复
热议问题