引起:java.lang.NoSuchMethodException:没有这样的方法:org.apache.logging.log4j.util.StackLocator

问题描述 投票:-1回答:2

将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
            }
        }
    }

所有这些导致上述相同的错误。

我没有添加这个库作为依赖,这意味着它是我正在导入的其他库的一部分,但我不确定哪个。

有没有办法......

  1. 通过一些新的魔法配置更改解决了这个问题,谷歌的某些隐藏文档记录在某处?
  2. 如果这不是一个选项,禁用此依赖项,以便它不会惹恼我的项目?
  3. 如何找到哪个依赖项使用此库,以便我可以摆脱或更新该依赖项?

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)

android-studio gradle
2个回答
1
投票

我猜你必须添加两个包,log4j-apilog4j-core ...因为it says org.apache.logging.log4j.utilInternal 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迁移文档。


0
投票

最后,我不得不删除所有库,包括org.apache.logging.log4j:log4j-core:2.10.0,以使其工作。

但是看看Martin Zeitler的回答是非常有帮助的!

© www.soinside.com 2019 - 2024. All rights reserved.