错误:任务':app:dexDebug'执行失败。'完成非零退出值2

时间:2015-09-26 17:46:25

标签: android retrofit

错误

Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-8-oracle/bin/java'' finished with non-zero exit value 2

我有两个模型类,如下所示。

MovieComments.java

import com.google.gson.annotations.SerializedName;

import java.util.List;

public class MovieComments {


    @SerializedName("page")
    public int page;


    @SerializedName("results")
    public List<MovieComment> movieCommentList;


    @SerializedName("total_pages")
    public int totalPage;


    @SerializedName("total_results")
    public int totalResults;

}

另一个Model类MovieComment.java

import com.google.gson.annotations.SerializedName;

public class MovieComment {
    @SerializedName("id")
    public int id;


    @SerializedName("author")
    public String author;


    @SerializedName("content")
    public String content;
}

在IMovieService类中的Retrofit Interface。

import retrofit.Call;
import retrofit.http.GET;
import retrofit.http.Path;
import retrofit.http.Query;

public interface IMovieService {
    @GET("3/movie/{id}/reviews")
    Call<MovieComments> getComments(@Path("id") int id, @Query("api_key") String apiKey);
}

我将MainActivity中的数据作为:

 private void getCommentsFromWeb() {

        final MovieComments[] movieComments = new MovieComments[1];
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Constants.MOVIE_BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        IMovieService iMovieService = retrofit.create(IMovieService.class);

        Call<MovieComments> movieCommentsCall = iMovieService.getComments(movie.id, Constants.API_KEY);
        movieCommentsCall.enqueue(new retrofit.Callback<MovieComments>() {
            @Override
            public void onResponse(Response<MovieComments> response) {
                movieComments[0] = response.body();
                Log.e(TAG, "data" + movieComments[0].page);
            }

            @Override
            public void onFailure(Throwable t) {

            }
        });
    }

在build.gradle中

 compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'
 compile 'com.squareup.retrofit:converter-gson:2.0.0-beta1'
 compile files('libs/gson-2.2.4.jar')

1 个答案:

答案 0 :(得分:1)

Gradle可能在解决项目的依赖关系方面存在问题,因为您通过maven编译改进的gson转换器,但gson本身来自jar文件。

代替compile files('libs/gson-2.2.4.jar')交换compile 'com.google.code.gson:gson:2.3.1'。 Maven应该能够正确处理依赖关系。

编辑:实际上我认为你可以完全跳过gson依赖。 gson-converter也包括它