You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

调试至XML验证连接器时触发java.lang.NoClassDefFoundError错误求助

解决java.lang.NoClassDefFoundError: com/google/common/util/concurrent/internal/InternalFutureFailureAccess问题

别担心,这个错误我之前帮好几个开发者排查过,核心原因几乎都是Guava(谷歌核心工具库)的版本不兼容或者依赖缺失导致的。下面给你一步步拆解解决方案:

  • 先搞懂错误根源:

    这个InternalFutureFailureAccess类是Guava 24.0及以上版本才新增的内部类。如果你的项目里引用了低于24.0的Guava版本,或者有其他第三方依赖间接引入了旧版Guava,就会出现这个“找不到类”的报错。

  • 解决方案1:统一升级并锁定Guava版本
    最直接的办法是在你的项目构建文件里明确指定一个兼容的Guava稳定版本(比如30.1-jre,这个版本兼容性很强),同时排除其他依赖带来的旧版Guava,避免版本冲突:

    如果用Maven,修改pom.xml

    <!-- 直接引入指定版本的Guava -->
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>30.1-jre</version>
    </dependency>
    
    <!-- 举个例子:如果XML验证连接器依赖带了旧Guava,就排除它 -->
    <dependency>
        <groupId>[连接器的groupId]</groupId>
        <artifactId>[连接器的artifactId]</artifactId>
        <version>[连接器版本]</version>
        <exclusions>
            <exclusion>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    如果用Gradle,修改build.gradle

    // 引入指定版本的Guava
    implementation 'com.google.guava:guava:30.1-jre'
    
    // 排除连接器依赖中的旧版Guava
    implementation('xxx:xxx-connector:x.x.x') {
        exclude group: 'com.google.guava', module: 'guava'
    }
    
  • 解决方案2:补全缺失的Guava依赖
    有些时候,你的项目可能没有直接引入Guava,但XML验证连接器依赖了它。这种情况下,直接把Guava依赖添加到你的构建文件里就行,版本选24.0及以上的稳定版都可以。

  • 最后别忘了清理缓存重新构建
    本地构建缓存有时候会残留旧版本的依赖,导致配置修改后还是报错。可以执行以下命令清理后重新构建:

    • Maven:mvn clean install -U
    • Gradle:./gradlew clean build --refresh-dependencies

按照上面的步骤操作后,再重新运行调试器,这个找不到类的错误应该就能解决了。

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

火山引擎 最新活动