你知道这个改造错误吗?

3 android gson retrofit2

这是显示控制台的消息。

Process: com.example.claseandroid, PID: 8609
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.claseandroid.ConectHeroku.getRetrofit(ConectHeroku.java:12)
    at com.example.claseandroid.ConectHeroku.getService(ConectHeroku.java:19)
    at com.example.claseandroid.MainActivity.getDataHeroku(MainActivity.java:26)
    at com.example.claseandroid.MainActivity.onCreate(MainActivity.java:21)
    at android.app.Activity.performCreate(Activity.java:7802)
    at android.app.Activity.performCreate(Activity.java:7791)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
Run Code Online (Sandbox Code Playgroud)

这是有错误的类

public static final String herokuLink = "https://mongodev.herokuapp.com/api/";

private static Retrofit getRetrofit(){
    return new Retrofit.Builder()
            .baseUrl(herokuLink)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
}
Run Code Online (Sandbox Code Playgroud)

这个方法有接口类。

public static routerHeroku getService(){
    return getRetrofit().create(routerHeroku.class);
}
Run Code Online (Sandbox Code Playgroud)

And*_*nko 13

这个错误是由于尝试使用 java 8 特性而不将它添加到项目中引起的,因为版本2.7.0 Retrofit 需要 java 8。所以尝试将它添加到你的模块级 build.gradle

  android {
    compileOptions {
        targetCompatibility = "8"
        sourceCompatibility = "8"
    }
}
Run Code Online (Sandbox Code Playgroud)