排除依赖后出现无法加载javax.inject.Provider类问题求助
解决openfoodfacts-java-wrapper依赖排除后无法加载javax.inject.Provider的问题
我在使用pl.coderion:openfoodfacts-java-wrapper:0.9.3 API时,此前为解决重复类错误对该依赖做了大量排除操作,现在出现无法加载javax.inject.Provider类的错误。以下是我的Gradle配置及错误提示,请求解决方法:
我的Gradle配置
implementation("pl.coderion:openfoodfacts-java-wrapper:0.9.3"){ exclude("io.netty", "netty-codec") exclude("io.netty","netty-transport") exclude("io.netty","netty-buffer") exclude("io.netty", "netty-codec-http") exclude("io.netty", "netty-codec-socks") exclude("io.micronaut","micronaut-router") exclude("io.micronaut","micronaut-validation") exclude("io.micronaut","micronaut-context") exclude("io.micronaut","micronaut-runtime") exclude("io.micronaut","micronaut-websocket") exclude("io.micronaut","micronaut-http-netty") exclude("io.micronaut","micronaut-http-server-netty") exclude("io.micronaut","micronaut-http") exclude("io.micronaut","micronaut-http-client") exclude("io.micronaut","micronaut-core") exclude("io.micronaut","micronaut-inject") exclude("io.micronaut","micronaut-http-client-core") exclude("ch.qos.logback", "logback-classic") exclude("ch.qos.logback", "logback-core") exclude("org.slf4j", "slf4j-api") exclude("org.apache.commons", "commons-lang3") exclude("org.reactivestreams", "reactive-streams") exclude("org.slf4j", "slf4j-api") exclude("javax.annotation","javax.annotation-api") configurations.all { resolutionStrategy{ exclude("com.google.code.findbugs","jsr305") exclude("javax.inject","javax.inject") } } }
错误信息
无法加载类 'javax.inject.Provider'
javax.inject.Provider
Gradle的依赖缓存可能已损坏(这种情况有时会在网络连接超时后发生。)
重新下载依赖并同步项目(需要网络)
Gradle构建进程(守护进程)的状态可能已损坏。停止所有Gradle守护进程可能会解决此问题。
停止Gradle构建进程(需要重启)
您的项目可能正在使用与项目中其他插件或项目要求的Gradle版本不兼容的第三方插件。
如果Gradle进程损坏,您也可以尝试关闭IDE,然后终止所有Java进程。
解决方法
1. 恢复必要的依赖
错误的直接原因是你在全局配置中主动排除了javax.inject:javax.inject,而javax.inject.Provider类正是来自这个依赖包。请移除以下配置:
exclude("javax.inject","javax.inject")
2. 重新评估依赖排除策略
你当前排除了几乎所有Micronaut相关依赖,但openfoodfacts-java-wrapper是基于Micronaut框架开发的,这些依赖是库正常运行的核心,不能全部移除。重复类错误应该针对性解决版本冲突,而非直接排除整个依赖:
- 使用Gradle的
dependencyInsight命令定位冲突依赖:
例如,若netty存在版本冲突,执行:./gradlew dependencyInsight --dependency <冲突依赖名>./gradlew dependencyInsight --dependency io.netty:netty-codec - 根据依赖树结果,通过
resolutionStrategy指定统一版本,而非直接排除:configurations.all { resolutionStrategy { force "io.netty:netty-codec:4.1.94.Final" // 替换为你的项目兼容版本 } }
3. 清理缓存并重启
- 执行命令刷新依赖并清理缓存:
./gradlew clean build --refresh-dependencies - 停止Gradle守护进程:
./gradlew --stop - 关闭IDE并终止所有Java进程,重新打开项目同步Gradle。
内容的提问来源于stack exchange,提问作者Mihneas22
相关产品推荐
相关产品推荐

