Android studio 原因:java.lang.NoSuchMethodException:无此类方法:org.apache.logging.log4j.util.StackLocator

Android studio 原因:java.lang.NoSuchMethodException:无此类方法:org.apache.logging.log4j.util.StackLocator,android-studio,gradle,Android Studio,Gradle,在将AndroidStudio更新到最新的3.1.x版本后,gradle抱怨annoationProcessor必须单独声明,并建议我在annoationProcessor配置中添加“org.apache.logging.log4j:log4j core:2.10.0” 我添加了它,导致此运行任务中出现以下错误: run tasks :app:transformClassesWithDesugarForAppDebug 11s 442ms 错误: Caused by: java.lan

在将AndroidStudio更新到最新的3.1.x版本后,gradle抱怨annoationProcessor必须单独声明,并建议我在annoationProcessor配置中添加“org.apache.logging.log4j:log4j core:2.10.0”

我添加了它,导致此运行任务中出现以下错误:

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 PublishNoDefault已被弃用,不再有效。所有变体现在都已发布。 在[src/nullnull/debug、src/debug/nullnull、src/nullnull、src/debug、src/nulldebug]中查找时找不到google-services.json registerResGeneratingTask已弃用,请使用registerGeneratedResFolders(FileCollection) 在[src/nullnull/release,src/release/nullnull,src/nullnull,src/release,src/nullrelease]中查找时找不到google-services.json registerResGeneratingTask已弃用,请使用registerGeneratedResFolders(FileCollection)


    我猜您必须添加这两个包,
    log4japi
    log4j core
    …因为
    org.apache.logging.log4j.util
    是log4japi的
    内部实用程序类

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

    这是迁移文档。

    最后我不得不删除所有库,包括
    org.apache.logging.log4j:log4j核心:2.10.0


    但是仔细看看马丁·泽特勒的回答,它非常有用

    谢谢你的建议。我现在都试过了,但仍然无法消除错误。@U用户,
    dependencyInsight
    怎么说?
    StackLocator
    可能构造错误,…没有
    getCallerClass(String,String,Stream)
    。是的,这就是我觉得奇怪的地方。该项目以前使用相同的依赖项,然后在这段时间内出现了一些android studio更新,现在出现了这个错误。我已将dependencyInsight的输出添加到问题中。抱怨google-services.json,这有关系吗?发现这个问题似乎或多或少是一样的: