java.lang.NoSuchMethodError: com.google.common.io.Files.fileTraverser()Lcom/google/common/graph/Traverser;
SundayGao opened this issue · comments
使用1.0.5编译期报错
Caused by: java.lang.NoSuchMethodError: com.google.common.io.Files.fileTraverser()Lcom/google/common/graph/Traverser;
at me.ele.lancet.plugin.internal.context.DirectoryContentProvider.forEach(DirectoryContentProvider.java:35)
at me.ele.lancet.plugin.internal.context.ClassifiedContentProvider.forEach(ClassifiedContentProvider.java:29)
at me.ele.lancet.plugin.internal.context.ContextReader$QualifiedContentTask.call(ContextReader.java:131)
at me.ele.lancet.plugin.internal.context.ContextReader$QualifiedContentTask.call(ContextReader.java:119)
你本地最终依赖的 guava 是什么版本? lancet 现有项目依赖的 guava 版本必须是 24.0 及以上,虽然 lancet 项目里 build.gradle 指定的 guava 版本是 22.0,但是由于依赖的 gradle 版本是 3.3.2,最终依赖的 guava 版本是 26.0-jre。
\--- com.android.tools.build:gradle:3.3.2
+--- com.android.tools.build:builder:3.3.2
| +--- com.android.tools.build:builder-model:3.3.2
| | \--- com.android.tools:annotations:26.3.2
| +--- com.android.tools.build:builder-test-api:3.3.2
| | \--- com.android.tools.ddms:ddmlib:26.3.2
| | +--- com.android.tools:common:26.3.2
| | | +--- com.android.tools:annotations:26.3.2
| | | \--- com.google.guava:guava:26.0-jre
| | | +--- com.google.code.findbugs:jsr305:3.0.2
| | | +--- org.checkerframework:checker-qual:2.5.2
| | | +--- com.google.errorprone:error_prone_annotations:2.1.3
| | | +--- com.google.j2objc:j2objc-annotations:1.1
| | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14
你可以通过 ./gradlew lancet-plugin:dependencies 查看下依赖关系。
这个问题下次在项目的 build.gradle 里也会同步进行升级。
感谢你的回答,现在项目中使用的是 1.0.4,不会报错。
原因也明白是 guava 版本偏低。
但还是不知道如果想使用 1.0.5 应该怎么修改项目的配置?
我是在自己的 Android Demo 项目中配置的
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'me.ele:lancet-plugin:1.0.5'
}
编译期就会报以上的错误。
感谢你的回答,现在项目中使用的是 1.0.4,不会报错。
原因也明白是 guava 版本偏低。
但还是不知道如果想使用 1.0.5 应该怎么修改项目的配置?
我是在自己的 Android Demo 项目中配置的
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'me.ele:lancet-plugin:1.0.5'
}
编译期就会报以上的错误。
可以把 gradle 版本升级至 3.3.2 及以上。
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath 'me.ele:lancet-plugin:1.0.5'
}
因为 gradle 工具对 guava 版本有依赖,lancet 也有依赖,这也是 lancet 一直不支持新版本 gradle 编译工具的原因。
感谢你的回答,现在项目中使用的是 1.0.4,不会报错。
原因也明白是 guava 版本偏低。
但还是不知道如果想使用 1.0.5 应该怎么修改项目的配置?
我是在自己的 Android Demo 项目中配置的
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'me.ele:lancet-plugin:1.0.5'
}
编译期就会报以上的错误。可以把 gradle 版本升级至 3.3.2 及以上。
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath 'me.ele:lancet-plugin:1.0.5'
}因为 gradle 工具对 guava 版本有依赖,lancet 也有依赖,这也是 lancet 一直不支持新版本 gradle 编译工具的原因。
感谢!