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

Linux下Tomcat9启动Jacoco Agent失败:LinkageError异常求助

Linux下Tomcat9启动Jacoco代理报错的解决方案

核心报错信息:

Caused by: java.lang.LinkageError: loader 'bootstrap' attempted duplicate class definition for java.lang.$JaCoCo. (java.lang.$JaCoCo is in module java.base of loader 'bootstrap')

这说明Jacoco代理尝试在bootstrap类加载器中重复定义java.lang.$JaCoCo类,导致启动失败。以下是针对性解决方案:

  • 排查重复的Jacoco代理配置
    检查Tomcat的catalina.sh、系统环境变量JAVA_OPTS或CATALINA_OPTS,确保只添加一次-javaagent指向Jacoco代理jar的配置,避免重复注入代理。

  • 清理Tomcat临时文件
    删除Tomcat的work和temp目录下的所有文件,清除可能残留的旧代理类文件:

    rm -rf /path/to/tomcat/work/*
    rm -rf /path/to/tomcat/temp/*
    
  • 调整Jacoco代理参数
    在-javaagent参数中添加classdumpdir,指定类文件输出目录,方便排查重复加载问题:

    -javaagent:/home/jenkins/tools/jacoco/lib/jacocoagent.jar=port=6300,destfile=/home/jenkins/jacoco/jacoco.exec,output=tcpserver,includes=myPackage.*,append=false,classdumpdir=/tmp/jacoco_classes
    

    也可以尝试通过-Xbootclasspath/a指定Jacoco代理的类路径,避免bootstrap类加载器冲突:

    -Xbootclasspath/a:/home/jenkins/tools/jacoco/lib/jacocoagent.jar
    -javaagent:/home/jenkins/tools/jacoco/lib/jacocoagent.jar=port=6300,destfile=/home/jenkins/jacoco/jacoco.exec,output=tcpserver,includes=myPackage.*,append=false
    
  • 检查Jenkins配置
    若通过Jenkins启动Tomcat,确认Jenkins中没有其他任务或插件重复配置Jacoco代理,同时检查全局工具配置中Jacoco路径是否正确。

  • 升级Jacoco版本
    当前使用的Jacoco 0.8.10存在JDK11下的类加载兼容问题,尝试升级到最新稳定版(如0.8.12及以上),新版本可能修复此类冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:15:21