我正在尝试使用自定义类加载器进行 self 练习,但我有一些问题。有没有办法指示 JVM 全局使用我的自定义类加载器?比如我写了一个运行在Tomcat 6下的小app,servlet是由容器管理的,我的类加载器应该在哪里设置呢?此外,webapp 使用了一些第三方 jar,我可以控制这些 jar 的类加载吗?
如果是独立应用,上述问题的答案是否会有所不同?
谢谢!
最佳答案
您可以将系统默认类加载器设置为 JVM 参数:
java -Djava.system.class.loader
=com.test.YourCustomClassLoader com.test.YourMainClass
由于 Tomcat 作为 java 应用程序启动,您也可以在 %TOMCAT_HOME%\bin\run.bat
或 $TOMCAT_HOME/bin/run.sh中设置此参数
可执行文件。
完成编辑:
如果您将类加载器设置为系统类加载器,它将用于加载 Tomcat 组件类、不同的库和您自己的类。
如果您希望您的类加载器仅用于您的应用程序类(包括库等),您应该为您的上下文配置一个 Loader
元素。
Loader 元素必须在您的 Context
元素中定义,可以在 context.xml
文件中定义。
更多信息:
- Apache Tomcat: Class Loader HOW-TO : 定义类加载器在 Tomcat 中的工作方式。
- Tomcat Configuration Reference: The Context Container : 如何定义您的
Context
元素 - Tomcat Configuration Reference: The Loader Component : 如何为您自己的
Context
定义自定义Loader
元素。
关于java - 如何将我的自定义类加载器设置为默认?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3801714/