运行Android应用产生java.lang.NoClassDefFoundError的:retrofit.RestAdapter $生成器 [英] Running Android app produces java.lang.NoClassDefFoundError: retrofit.RestAdapter$Builder

查看:1570
本文介绍了运行Android应用产生java.lang.NoClassDefFoundError的:retrofit.RestAdapter $生成器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在在Android上使用Flickr的API照片库应用程序(使用Eclipse 4.4 SDK)。该项目成功编译但应用程序一旦启动它在Nexus 7(2012)重新运行4.4崩溃

包含在我的构建路径有以下几罐:
  改造-1.6.1
  okhttp-2.0.0
  GSON-2.2.4
  毕加索-2.3.2

下面是相关文件:

GalleryApp.java

 进口retrofit.RequestInterceptor;
进口retrofit.RestAdapter;
进口utils.Constants;
进口android.app.Application;
进口apiService.FlickrService;公共类GalleryApp扩展应用{    私人FlickrService mFlickrService;    公共同步FlickrService getFlickrService(){        如果(mFlickrService == NULL){            RestAdapter restAdapter =新RestAdapter.Builder()
                    .setEndpoint(FlickrService.FLICKR_API_URL)
                    .setRequestInterceptor(新RequestInterceptor(){
                        @覆盖
                        公共无效拦截(RequestFacade requestFacade){
                            requestFacade.addQueryParam(格式化,JSON);
                            requestFacade.addQueryParam(API_KEY,FlickrService.FLICKR_API_KEY);                            requestFacade.addHeader(Constants.HTTP_HEADER_ACCEPT,Constants.ACCEPT_APPLICATION_JSON);
                        }
                    })
                    。建立();
            / *
            RestAdapter restAdapter =新RestAdapter.Builder()。对setEndpoint(FlickrService.FLICKR_API_URL)
            //.setConverter(new GsonConverter(GsonUtil.getGsonInstance()))
                    .setClient(新OkClient())
                    .setLogLevel(RestAdapter.LogLevel.FULL)
                    .setRequestInterceptor(新RequestInterceptor(){                        @覆盖
                        公共无效拦截(RequestFacade requestFacade){
                            //获取JSON响应
                            requestFacade.addQueryParam(格式化,JSON);
                            requestFacade.addQueryParam(API_KEY,FlickrService.FLICKR_API_KEY);                            requestFacade.addHeader(Constants.HTTP_HEADER_ACCEPT,Constants.ACCEPT_APPLICATION_JSON);
                        }
                    })
                    。建立();
            * /
            mFlickrService = restAdapter.create(FlickrService.class);
        }
        返回mFlickrService;
    }
}

FlickrService.java

 进口models.PhotoResponse;
进口retrofit.Callback;
进口retrofit.http.GET;
进口retrofit.http.Query;公共接口FlickrService {    公共静态最后弦乐FLICKR_API_KEY =dcf5dc19f9d4e86ead9722a634907e6e;
    公共静态最后弦乐FLICKR_API_URL =htt​​p://api.flickr.com/services/rest;    公共静态最后弦乐NO_JSON_CALLBACK =&放大器; nojsoncallback = 1;    @GET(/法= flickr.photos.search&放大器;额外= original_format+ NO_JSON_CALLBACK)
    无效searchPhotos(@Query(文本)字符串SEARCHTEXT,@Query(per_page)字符串perPage,
                      @Query(页)字符串页面,回调<&光响应GT; CB);
}

全部错误日志

  18 07-10:41:06.535:E / dalvikvm(3164):找不到类的retrofit.RestAdapter $生成器,从法com.example.retrofitgallery2.GalleryApp引用.getFlickrService
07-10 18:41:06.535:W / dalvikvm(3164):VFY:无法解析新的实例1138(Lretrofit / RestAdapter $生成器;)在LCOM /例子/ retrofitgallery2 / GalleryApp;
07-10 18:41:06.535:D / dalvikvm(3164):VFY:在更换运code 0x22 0×0005
07-10 18:41:06.535:D / dalvikvm(3164):DexOpt:无法在LCOM /例子/ retrofitgallery2 / GalleryApp值为0x07来选择直接调用0x2243; .getFlickrService
07-10 18:41:06.535:D / dalvikvm(3164):DexOpt:无法在LCOM /例子/ retrofitgallery2 / GalleryApp 0×12来选择直接调用0x224a; .getFlickrService
07-10 18:41:06.535:I / dalvikvm(3164):未能解决LCOM /例子/ retrofitgallery2 / GalleryApp $ 1;接口1137'Lretrofit / RequestInterceptor;'
07-10 18:41:06.535:W / dalvikvm(3164):Link类的LCOM /例子/ retrofitgallery2 / GalleryApp $ 1;'失败
07-10 18:41:06.535:D / dalvikvm(3164):DexOpt:无法在LCOM /例子/ retrofitgallery2 / GalleryApp 0x1b来选择直接调用0x20f3; .getFlickrService
07-10 18:41:06.535:I / dalvikvm(3164):未能解决Lviewer / MainActivity $ 1;接口1135'Lretrofit /回调;'
07-10 18:41:06.535:W / dalvikvm(3164):类链接Lviewer / MainActivity $ 1;'失败
07-10 18:41:06.535:E / dalvikvm(3164):找不到类的viewer.MainActivity $ 1',从方法viewer.MainActivity.onCreate引用
07-10 18:41:06.535:W / dalvikvm(3164):VFY:无法解析新的实例1149(Lviewer / MainActivity $ 1;)在Lviewer / MainActivity;
07-10 18:41:06.535:D / dalvikvm(3164):VFY:在更换运code 0x22 0x0027
07-10 18:41:06.535:I / dalvikvm(3164):未能解决Lviewer / MainActivity $ 1;接口1135'Lretrofit /回调;'
07-10 18:41:06.535:W / dalvikvm(3164):类链接Lviewer / MainActivity $ 1;'失败
07-10 18:41:06.535:D / dalvikvm(3164):DexOpt:无法在Lviewer / MainActivity 0x29来选择直接调用0x2258; .onCreate
07-10 18:41:06.535:D / AndroidRuntime(3164):关闭VM
07-10 18:41:06.535:W / dalvikvm(3164):主题ID = 1:螺纹未捕获的异常(组= 0x41854ba8)退出
07-10 18:41:06.545:E / AndroidRuntime(3164):致命异常:主要
07-10 18:41:06.545:E / AndroidRuntime(3164):工艺:com.example.retrofitgallery2,PID:3164
07-10 18:41:06.545:E / AndroidRuntime(3164):java.lang.NoClassDefFoundError的:retrofit.RestAdapter $生成器
07-10 18:41:06.545:E / AndroidRuntime(3164):在com.example.retrofitgallery2.GalleryApp.getFlickrService(GalleryApp.java:20)
07-10 18:41:06.545:E / AndroidRuntime(3164):在viewer.APIRestActivity.onCreate(APIRestActivity.java:16)
07-10 18:41:06.545:E / AndroidRuntime(3164):在viewer.MainActivity.onCreate(MainActivity.java:29)
07-10 18:41:06.545:E / AndroidRuntime(3164):在android.app.Activity.performCreate(Activity.java:5231)
07-10 18:41:06.545:E / AndroidRuntime(3164):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-10 18:41:06.545:E / AndroidRuntime(3164):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
07-10 18:41:06.545:E / AndroidRuntime(3164):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
07-10 18:41:06.545:E / AndroidRuntime(3164):在android.app.ActivityThread.access $ 800(ActivityThread.java:135)
07-10 18:41:06.545:E / AndroidRuntime(3164):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1196)
07-10 18:41:06.545:E / AndroidRuntime(3164):在android.os.Handler.dispatchMessage(Handler.java:102)
07-10 18:41:06.545:E / AndroidRuntime(3164):在android.os.Looper.loop(Looper.java:136)
07-10 18:41:06.545:E / AndroidRuntime(3164):在android.app.ActivityThread.main(ActivityThread.java:5001)
07-10 18:41:06.545:E / AndroidRuntime(3164):在java.lang.reflect.Method.invokeNative(本机方法)
07-10 18:41:06.545:E / AndroidRuntime(3164):在java.lang.reflect.Method.invoke(Method.java:515)
07-10 18:41:06.545:E / AndroidRuntime(3164):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:785)
07-10 18:41:06.545:E / AndroidRuntime(3164):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
07-10 18:41:06.545:E / AndroidRuntime(3164):在dalvik.system.NativeStart.main(本机方法)


解决方案

将罐子libs文件夹内,这样你不会得到一个运行时的NoClassDefFoundError 例外。我想你可能会对这部分已经搞砸了。

I am making a photo gallery app using the Flickr API on Android (Using Eclipse and 4.4 SDK). The project is successfully compiled but the app crashes as soon as it launches on Nexus 7 (2012) again running 4.4.

Included in my build path are the following jars: retrofit-1.6.1 okhttp-2.0.0 gson-2.2.4 picasso-2.3.2

Here are the relevant files:

GalleryApp.java

import retrofit.RequestInterceptor;
import retrofit.RestAdapter;
import utils.Constants;
import android.app.Application;
import apiService.FlickrService;

public class GalleryApp extends Application {

    private FlickrService mFlickrService;

    public synchronized FlickrService getFlickrService() {

        if (mFlickrService == null) {

            RestAdapter restAdapter = new RestAdapter.Builder()
                    .setEndpoint(FlickrService.FLICKR_API_URL)
                    .setRequestInterceptor(new RequestInterceptor() {
                        @Override
                        public void intercept(RequestFacade requestFacade) {
                            requestFacade.addQueryParam("format", "json");
                            requestFacade.addQueryParam("api_key", FlickrService.FLICKR_API_KEY);

                            requestFacade.addHeader(Constants.HTTP_HEADER_ACCEPT, Constants.ACCEPT_APPLICATION_JSON);
                        }
                    })
                    .build();
            /*
            RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(FlickrService.FLICKR_API_URL)
            //.setConverter(new GsonConverter(GsonUtil.getGsonInstance()))
                    .setClient(new OkClient())
                    .setLogLevel(RestAdapter.LogLevel.FULL)
                    .setRequestInterceptor(new RequestInterceptor() {

                        @Override
                        public void intercept(RequestFacade requestFacade) {
                            // Get responses in JSON
                            requestFacade.addQueryParam("format", "json");
                            requestFacade.addQueryParam("api_key", FlickrService.FLICKR_API_KEY);

                            requestFacade.addHeader(Constants.HTTP_HEADER_ACCEPT, Constants.ACCEPT_APPLICATION_JSON);
                        }
                    })
                    .build();
            */
            mFlickrService = restAdapter.create(FlickrService.class);
        }
        return mFlickrService;
    }
}

FlickrService.java

import models.PhotoResponse;
import retrofit.Callback;
import retrofit.http.GET;
import retrofit.http.Query;

public interface FlickrService {

    public static final String FLICKR_API_KEY = "dcf5dc19f9d4e86ead9722a634907e6e";
    public static final String FLICKR_API_URL = "http://api.flickr.com/services/rest";

    public static final String NO_JSON_CALLBACK = "&nojsoncallback=1";

    @GET("/?method=flickr.photos.search&extras=original_format" + NO_JSON_CALLBACK)
    void searchPhotos(@Query("text") String searchText, @Query("per_page") String perPage,
                      @Query("page") String page, Callback<PhotoResponse> cb);
}

Full Error Log

07-10 18:41:06.535: E/dalvikvm(3164): Could not find class 'retrofit.RestAdapter$Builder', referenced from method com.example.retrofitgallery2.GalleryApp.getFlickrService
07-10 18:41:06.535: W/dalvikvm(3164): VFY: unable to resolve new-instance 1138 (Lretrofit/RestAdapter$Builder;) in Lcom/example/retrofitgallery2/GalleryApp;
07-10 18:41:06.535: D/dalvikvm(3164): VFY: replacing opcode 0x22 at 0x0005
07-10 18:41:06.535: D/dalvikvm(3164): DexOpt: unable to opt direct call 0x2243 at 0x07 in Lcom/example/retrofitgallery2/GalleryApp;.getFlickrService
07-10 18:41:06.535: D/dalvikvm(3164): DexOpt: unable to opt direct call 0x224a at 0x12 in Lcom/example/retrofitgallery2/GalleryApp;.getFlickrService
07-10 18:41:06.535: I/dalvikvm(3164): Failed resolving Lcom/example/retrofitgallery2/GalleryApp$1; interface 1137 'Lretrofit/RequestInterceptor;'
07-10 18:41:06.535: W/dalvikvm(3164): Link of class 'Lcom/example/retrofitgallery2/GalleryApp$1;' failed
07-10 18:41:06.535: D/dalvikvm(3164): DexOpt: unable to opt direct call 0x20f3 at 0x1b in Lcom/example/retrofitgallery2/GalleryApp;.getFlickrService
07-10 18:41:06.535: I/dalvikvm(3164): Failed resolving Lviewer/MainActivity$1; interface 1135 'Lretrofit/Callback;'
07-10 18:41:06.535: W/dalvikvm(3164): Link of class 'Lviewer/MainActivity$1;' failed
07-10 18:41:06.535: E/dalvikvm(3164): Could not find class 'viewer.MainActivity$1', referenced from method viewer.MainActivity.onCreate
07-10 18:41:06.535: W/dalvikvm(3164): VFY: unable to resolve new-instance 1149 (Lviewer/MainActivity$1;) in Lviewer/MainActivity;
07-10 18:41:06.535: D/dalvikvm(3164): VFY: replacing opcode 0x22 at 0x0027
07-10 18:41:06.535: I/dalvikvm(3164): Failed resolving Lviewer/MainActivity$1; interface 1135 'Lretrofit/Callback;'
07-10 18:41:06.535: W/dalvikvm(3164): Link of class 'Lviewer/MainActivity$1;' failed
07-10 18:41:06.535: D/dalvikvm(3164): DexOpt: unable to opt direct call 0x2258 at 0x29 in Lviewer/MainActivity;.onCreate
07-10 18:41:06.535: D/AndroidRuntime(3164): Shutting down VM
07-10 18:41:06.535: W/dalvikvm(3164): threadid=1: thread exiting with uncaught exception (group=0x41854ba8)
07-10 18:41:06.545: E/AndroidRuntime(3164): FATAL EXCEPTION: main
07-10 18:41:06.545: E/AndroidRuntime(3164): Process: com.example.retrofitgallery2, PID: 3164
07-10 18:41:06.545: E/AndroidRuntime(3164): java.lang.NoClassDefFoundError: retrofit.RestAdapter$Builder
07-10 18:41:06.545: E/AndroidRuntime(3164):     at com.example.retrofitgallery2.GalleryApp.getFlickrService(GalleryApp.java:20)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at viewer.APIRestActivity.onCreate(APIRestActivity.java:16)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at viewer.MainActivity.onCreate(MainActivity.java:29)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at android.app.Activity.performCreate(Activity.java:5231)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at android.os.Handler.dispatchMessage(Handler.java:102)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at android.os.Looper.loop(Looper.java:136)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at android.app.ActivityThread.main(ActivityThread.java:5001)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at java.lang.reflect.Method.invokeNative(Native Method)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at java.lang.reflect.Method.invoke(Method.java:515)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
07-10 18:41:06.545: E/AndroidRuntime(3164):     at dalvik.system.NativeStart.main(Native Method)

解决方案

Place your jars inside the libs folder so that you wont get a runtime NoClassDefFoundError exception. I think you might have screwed up in this part.

这篇关于运行Android应用产生java.lang.NoClassDefFoundError的:retrofit.RestAdapter $生成器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆