You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Tomcat以记录启动时加载的所有Jar包及类

我来给你分享几个实用的方案,不管是追查不明jar的加载路径,还是定位某个类的来源,都能搞定:

方案一:给Tomcat加Java启动参数,直接输出类加载细节

这是最直接的临时排查办法,不用改太多配置,在startup.sh里加参数就行:

  • 打开你的startup.sh,找到CATALINA_OPTS的配置行(如果没有就自行添加一行),追加以下参数:
    CATALINA_OPTS="$CATALINA_OPTS -verbose:class"
    
    这个参数会让JVM在加载每个类时,打印出类名和它的来源(jar包路径或目录),输出直接写入catalina.out日志。
  • 如果想更细致地查看类加载器扫描的所有路径,还可以再加一个参数:
    CATALINA_OPTS="$CATALINA_OPTS -Dsun.misc.URLClassPath.debug=true"
    
    它会打印出类加载器纳入范围的所有jar包和目录,帮你排查哪些路径可能引入了不明jar。

重启Tomcat后,去logs/catalina.out里搜索你关心的jar包名或类名,就能快速找到对应路径。

方案二:配置Tomcat的logging.properties,记录类加载日志

如果需要长期监控类加载情况,或者不想修改启动参数,可以调整日志配置:

  • 打开~/conf/logging.properties,添加以下配置项:
    # 开启类加载器的调试级日志
    org.apache.catalina.loader.WebappClassLoader.level = FINE
    org.apache.catalina.loader.StandardClassLoader.level = FINE
    # 确保日志处理器能接收FINE级别的日志
    java.util.logging.ConsoleHandler.level = FINE
    java.util.logging.FileHandler.level = FINE
    
    其中WebappClassLoader负责加载web应用内的jar,StandardClassLoader负责Tomcat核心jar,你可以根据实际需求选择开启对应的日志。
  • 保存配置后重启Tomcat,类加载的详细路径信息会输出到logs/catalina.out或你指定的日志文件中。
方案三:直接定位特定类的加载路径

如果已经知道目标类的完整类名,用这个方法效率最高:

  • 代码方式:可以写一个简单的JSP/Servlet(针对web应用类),或者独立Java类来打印:
    try {
        Class<?> targetClass = Class.forName("com.unknown.YourTargetClassName");
        URL jarLocation = targetClass.getProtectionDomain().getCodeSource().getLocation();
        System.out.println("目标类所在jar路径:" + jarLocation.getPath());
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    
    把这段代码放到你的web应用中运行,就能直接得到类所在jar的绝对路径。
  • 命令行工具方式:先用jps命令找到Tomcat的进程ID,再用jcmd工具查询类加载信息:
    # 列出所有类加载器及其加载路径
    jcmd <TomcatPID> VM.classloader -l
    # 精准查找特定类的加载来源(需替换ClassLoaderID和类名)
    jcmd <TomcatPID> VM.classloader -c <ClassLoaderID> -q com.unknown.YourTargetClassName
    
    这个方法无需修改代码,适合生产环境快速排查。

总结一下:临时排查优先用方案一的-verbose:class;长期监控选方案二的日志配置;已知类名时方案三效率最高。

内容的提问来源于stack exchange,提问作者Timothy Clotworthy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:21:58