Java项目中WebJarAssetLocator与ClassGraph版本不兼容启动报错
解决WebJarAssetLocator调用ClassGraph方法不存在的问题
核心原因
问题根源是依赖版本不兼容:org.webjars:webjars-locator-core依赖的ClassGraph版本,和项目中实际引入的ClassGraph版本不匹配。WebJarAssetLocator需要的acceptPaths(String[])方法在你当前使用的ClassGraph版本中已被移除或重命名。
具体解决步骤
排查依赖冲突:用依赖分析命令找出项目中ClassGraph的来源和版本
- Maven:
mvn dependency:tree | grep classgraph - Gradle:
./gradlew dependencies | grep classgraph
- Maven:
统一ClassGraph版本:根据
webjars-locator-core的版本匹配兼容的ClassGraph版本,在依赖管理中强制指定:- Maven示例(在
<dependencyManagement>中添加):
<dependency> <groupId>io.github.classgraph</groupId> <artifactId>classgraph</artifactId> <version>4.8.147</version> <!-- 替换为webjars-locator-core依赖的对应版本 --> </dependency>- Gradle示例:
implementation('io.github.classgraph:classgraph') { force = '4.8.147' }- Maven示例(在
清理缓存并重构:
- Maven:
mvn clean install -U - Gradle:
./gradlew clean build --refresh-dependencies
执行后重新启动应用,验证问题是否解决。
- Maven:
降级WebJars版本(备选):如果强制ClassGraph版本引发其他问题,可尝试将
webjars-locator-core降级到旧版本(比如0.45),该版本依赖的ClassGraph包含acceptPaths方法。
内容的提问来源于stack exchange,提问作者Kristina
相关产品推荐
相关产品推荐

