eleme / lancet

A lightweight and fast AOP framework for Android App and SDK developers

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

java.lang.NoSuchMethodError: com.google.common.io.Files.fileTraverser()Lcom/google/common/graph/Traverser;

SundayGao opened this issue · comments

commented

使用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 里也会同步进行升级。

commented

感谢你的回答,现在项目中使用的是 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 编译工具的原因。

commented

感谢你的回答,现在项目中使用的是 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 编译工具的原因。

感谢!