当前位置: 代码迷 >> 综合 >> java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;
  详细解决方案

java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;

热度:17   发布时间:2023-12-02 16:51:18.0

异常信息:

Android Studio报错java.lang.NoSuchMethodError...declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.runtime/javalib/core-oj.jar: 

java.lang.NoSuchMethodError: 
No static method metafactory
(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;
Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)
Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; 
or its super classes 
(declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.runtime/javalib/core-oj.jar)

原因:

项目不支持Lambda语法,引用的第三方的依赖包里面的代码使用了Lambda式的表达式。

Lambda表达式是JDK8的一个新特性,如果项目没有配置JDK8会报错。

解决方案:

项目设置编译JDK,点击File -> Project Structure->Modules -> Properties  设置Source Compatibility和 Target Compatibility两项为 JDK8,如下图所示

然后点击apply,点击OK,最好clean和Sync一下,重新运行。

 

 

  相关解决方案