原因:java.lang.ClassNotFoundException:在路径上找不到类“ retrofit2.Retrofit $ Builder”

时间:2019-12-02 01:45:07

标签: android retrofit2

我在AAR模块上使用Retrofit2时遇到问题,这是错误日志:

java.lang.NoClassDefFoundError: Failed resolution of: Lretrofit2/Retrofit$Builder;
    at ph.com.jti.ticketko_module.API.RetroFit.Client.getClient(Client.java:19)
    at ph.com.jti.ticketko_module.API.RetroFit.ActivationResponseV2Retrofit.getResponse(ActivationResponseV2Retrofit.java:27)

但是我确定我的应用程序s和aar本身上有一个multiDexEnabled true。我尝试阅读有关此错误的this,他们说它只需要 Invalidate cache / restart (无效的缓存/重新启动),但它不起作用。这是代码:

import com.androidnetworking.interceptors.HttpLoggingInterceptor;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class Client {

private static Retrofit retrofit = null;

public static Retrofit getClient(String baseURL) {
    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();


    retrofit = new Retrofit.Builder()
            .baseUrl(baseURL)
            .addConverterFactory(GsonConverterFactory.create())
            .client(client)
            .build();

    return retrofit;
  }
}

接口:

public interface APIInterface {

@Headers({"Content-Type: application/json", "Project: VElDS0VUS08="})
@POST("/our-end-point")
Call<Data> getActivationDetails(@Body JSONObject jsonObject);

}

这是主要的类:

 public static synchronized String getResponse(String baseUrl, JSONObject jsonObjectBody) {
    final String[] result = {""};
    String api = "";

    if (baseUrl.equalsIgnoreCase("LOCAL")) {
        api = Environments.getMarkLocalAPI();
    } else if (baseUrl.equalsIgnoreCase("DEVELOPMENT")) {
        api = Environments.getDevelopmentAPI();
    } else if (baseUrl.equalsIgnoreCase("STAGING")) {
        api = Environments.getStagingAPI();
    } else if (baseUrl.equalsIgnoreCase("DEPLOYMENT")) {
        api = Environments.getDeploymentAPI();
    }

    APIInterface apiInterface = Client.getClient(api).create(APIInterface.class);

    Call<Data> call = apiInterface.getActivationDetails(jsonObjectBody);
    call.enqueue(new Callback<Data>() {

        @Override
        public void onResponse(Call<Data> call, Response<Data> response) {
            if (response.isSuccessful()) {
                result[0] = String.valueOf(response.body());
            } else {
                result[0] = "no data";
            }
        }

        @Override
        public void onFailure(Call<Data> call, Throwable t) {
            result[0] = t.getMessage();
        }
    });
    return result[0];
}

}

0 个答案:

没有答案