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

Java插桩代理实例化ClassFileTransformer时遇NoClassDefFoundError

问题原因及解决方案

核心原因

报错NoClassDefFoundError: javassist/NotFoundException的本质是你的代理jar包中未包含javassist第三方依赖的字节码文件。虽然你已经将代理类MyInstrumentationAgent和转换器类AtmTransformer打包进jar,但javassist作为外部依赖,默认构建工具(Maven/Gradle)不会自动将其合并到代理jar中。当JVM加载代理的premain方法时,实例化AtmTransformer需要用到javassist的类,却找不到对应的class文件,因此抛出异常。

解决步骤

1. 确认jar内容(可选但建议)

执行以下命令检查代理jar是否包含javassist类:

jar tf core-java-jvm-0.0.1-SNAPSHOT-agent.jar

如果输出中没有javassist/开头的路径,说明确实缺少依赖。

2. 修改构建配置,打包第三方依赖

根据你使用的构建工具,配置插件将javassist合并到代理jar中:

Maven 配置

使用maven-shade-plugin插件,在pom.xml中添加以下配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.4.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <manifestEntries>
                            <Premain-Class>你的包路径.MyInstrumentationAgent</Premain-Class>
                            <Can-Redefine-Classes>true</Can-Redefine-Classes>
                        </manifestEntries>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

执行mvn package后,target目录下生成的shade jar会包含所有依赖类。

Gradle 配置

使用shadow插件,在build.gradle中添加:

plugins {
    id 'com.github.johnrengelman.shadow' version '8.1.1'
}

shadowJar {
    manifest {
        attributes 'Premain-Class': '你的包路径.MyInstrumentationAgent',
                   'Can-Redefine-Classes': 'true'
    }
}

执行./gradlew shadowJar,生成的shadow jar会包含javassist依赖。

3. 重新运行命令

使用打包完成的代理jar(注意Maven的shade jar、Gradle的shadow jar可能和普通jar文件名有差异),执行原命令即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:27:04