java - 如何将我的自定义类加载器设置为默认?

标签 java tomcat classloader

我正在尝试使用自定义类加载器进行 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 文件中定义。 更多信息:

关于java - 如何将我的自定义类加载器设置为默认?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3801714/

相关文章:

java - 如何将 .jar 文件添加到 Java 代码

java - 将 Tomcat 9 添加到 eclipse

tomcat - 取消部署 Tomcat Web 应用程序时如何防止文件锁定?

java - 嵌入 Tomcat 并向部署的应用程序发出请求

Java 资源作为文件

java - 如果我关闭 stardog 连接池中的连接会发生什么

java - JLabel图像图标: stop auto centering in the frame

java - OkHttp3Connection代码403错误

java - 类路径中的版本控制信息

java - java.lang.reflect.Field 实例在单个类加载器中是唯一的吗?