将AndroidStudio更新到最新的3.1.x版本后,gradle抱怨annoationProcessors必须单独声明,并建议我将'org.apache.logging.log4j:log4j-core:2.10.0'添加到我的annoationProcessor配置中。
我添加了它,导致此运行任务中出现以下错误:
run tasks
:app:transformClassesWithDesugarForAppDebug 11s 442ms
错误:
Caused by: java.lang.NoSuchMethodException: no such method: org.apache.logging.log4j.util.StackLocator.lambda$getCallerClass$3(String,String,Stream)Optional/invokeStatic
Caused by: java.lang.NoSuchFieldError: method resolution failed
我还尝试用此禁用注释检查,而不是添加上面的行:
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath false
}
}
}
所有这些导致上述相同的错误。
我没有添加这个库作为依赖,这意味着它是我正在导入的其他库的一部分,但我不确定哪个。
有没有办法......
DependencyInsight:
配置项目:不推荐使用androidlib publishNonDefault,不再有效。所有变体现已发布。在查看[src / nullnull / debug,src / debug / nullnull,src / nullnull,src / debug,src / nullnullDebug] registerResGeneratingTask时,无法找到google-services.json,请使用registerGeneratedResFolders(FileCollection)找不到google- services.json在查看[src / nullnull / release,src / release / nullnull,src / nullnull,src / release,src / nullnullRelease] registerResGeneratingTask时不推荐使用registerGeneratedResFolders(FileCollection)
我猜你必须添加两个包,log4j-api
和log4j-core
...因为it says org.apache.logging.log4j.util
是Internal utility classes for the Log4j 2 API
。
dependencies {
api "org.apache.logging.log4j:log4j-api:2.11.1"
implementation "org.apache.logging.log4j:log4j-core:2.11.1"
}
可以列出所有/特定模块的依赖关系:
./gradlew :app:dependencies >> ./results/dependencies.txt
./gradlew :app:dependencies --configuration debugCompileClasspath
为了列出所有可用的配置:
./gradlew :app:dependencies | grep ' - ' | grep -v '(n)' | grep -v 'deprecated'
然后可以列出每个构建配置的依赖项:
./gradlew :app:dependencyInsight --configuration debugCompileClasspath --dependency log4j-core
没试过,但你有没有试过类似的东西......
dependencies {
annotationProcessor "org.apache.logging.log4j:log4j-core:2.11.1"
}
这是annotationProcessor迁移文档。
最后,我不得不删除所有库,包括org.apache.logging.log4j:log4j-core:2.10.0
,以使其工作。
但是看看Martin Zeitler的回答是非常有帮助的!