Không có phương pháp tĩnh metafactory


26

Tôi gặp sự cố với ứng dụng của mình khi đăng nhập, ứng dụng gặp sự cố và tôi gặp lỗi:

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)
        at okhttp3.internal.Util.<clinit>(Util.java:87)
        at okhttp3.internal.Util.skipLeadingAsciiWhitespace(Util.java:321)
        at okhttp3.HttpUrl$Builder.parse(HttpUrl.java:1313)
        at okhttp3.HttpUrl.get(HttpUrl.java:917)
        at retrofit2.Retrofit$Builder.baseUrl(Retrofit.java:492)
        at com.example.usub.Remote.RetrofitClient.getClient(RetrofitClient.java:14)
        at com.example.usub.Common.Common.getGoogleAPI(Common.java:10)
        at com.example.usub.Welcome.onCreate(Welcome.java:208)
        at android.app.Activity.performCreate(Activity.java:7825)
        at android.app.Activity.performCreate(Activity.java:7814)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

Tôi đã cố gắng để gây rối với các lớp và thay đổi các biến. Vấn đề dường như xuất phát từ gói này:

import retrofit2.Retrofit;
import retrofit2.converter.scalars.ScalarsConverterFactory;

public class RetrofitClient {
    private static Retrofit retrofit = null;

    public static Retrofit getClient(String baseURL)
    {
        if(retrofit == null)
        {
            retrofit = new Retrofit.Builder()
                    .baseUrl(baseURL)
                    .addConverterFactory(ScalarsConverterFactory.create())
                    .build();
        }
        return retrofit;

    }
    }

Sau đó, nó cung cấp cho một tài liệu tham khảo khác để:

import com.example.usub.Remote.IGoogleAPI;
import com.example.usub.Remote.RetrofitClient;
public class Common {
    public static  final String baseURL = "https://maps.googleapis.com";
    public static IGoogleAPI getGoogleAPI()
    {
        return RetrofitClient.getClient(baseURL).create(IGoogleAPI.class);
    }
}

Đây là học sinh của tôi

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    defaultConfig {
        applicationId "com.example.usub"
        minSdkVersion 26
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.2.0-alpha01'
    implementation 'com.firebase:geofire-android:2.1.2'
    implementation 'com.github.kmenager:material-animated-switch:1.2.2'
    implementation 'com.squareup.retrofit2:retrofit:2.7.0'
    implementation 'com.squareup.retrofit2:converter-scalars:2.7.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.firebase:firebase-database:19.2.0'
    implementation 'com.google.firebase:firebase-auth:19.2.0'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'com.github.d-max:spots-dialog:0.7@aar'
    implementation "androidx.cardview:cardview:1.0.0"
    implementation 'uk.co.chrisjenx:calligraphy:2.3.0'
    implementation 'com.rengwuxian.materialedittext:library:2.1.4'
    implementation 'com.google.android.gms:play-services-maps:17.0.0'
    //implementation 'com.google.android.gms:play-services:17.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'com.google.firebase:firebase-analytics:17.2.1'
    implementation 'com.google.android.gms:play-services-location:17.0.0'
}

apply plugin: 'com.google.gms.google-services'

Bất kỳ ý tưởng về cách tìm phương pháp để sửa lỗi?

Câu trả lời:


73

Hãy thử chuyển sang khả năng tương thích Java 8, để khử đường thích hợp cho một số thư viện:

android {

    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Ngoài ra, Google JSON API có thể cần GsonConverterFactory.


2
Theo tài liệu Square.github.io/okhttp/upgrad_to_okhttp_4 bạn cũng nên thêm Android {kotlinOptions {jvmTarget = "1.8"}}
Mikhail Sharin

1
@MikhailSharin Điều này chỉ áp dụng khi chuyển mã từ Kotlin sang mã byte Java; vì vậy, điều đó chỉ bắt buộc đối với các dự án Kotlin (hoặc các dự án hỗn hợp), nhưng nó không bắt buộc đối với các dự án thuần Java. Cảm ơn vì đã chú ý, vì tôi chắc chắn điều này cuối cùng có thể giúp được ai đó.
Martin Zeitler

Điều này đã làm việc @MartinZeitler rất cảm ơn
Fanadez
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.