【问题标题】:Android: App engine NoClassDefFoundErrorAndroid:应用引擎 NoClassDefFoundError
【发布时间】:2016-01-16 05:51:32
【问题描述】:

我目前正在开发一个使用应用引擎后端的应用。以下代码崩溃了

java.lang.NoClassDefFoundError: com.petfinder.backend.model.userApi.UserApi$Builder

我被难住了。我试过更新所有的罐子。仍然没有运气。

我可以在我的 Nexus 6 上毫无错误地运行它,但是当我在 Moto E 等其他设备上运行时,该错误会使应用程序崩溃。

在 4.4.4 设备上测试。

UserApi.Builder builder = new UserApi.Builder(AndroidHttp.newCompatibleTransport(),
            new AndroidJsonFactory(), null)
            // options for running against local devappserver
            // - 10.0.2.2 is localhost's IP address in Android emulator
            // - turn off compression when running against local devappserver
            //                        .setRootUrl("http://192.168.16.254:8080/_ah/api")
            .setRootUrl(URL)
            .setGoogleClientRequestInitializer(new GoogleClientRequestInitializer() {
                @Override
                public void initialize(AbstractGoogleClientRequest<?> abstractGoogleClientRequest) throws IOException {
                    abstractGoogleClientRequest.setDisableGZipContent(true);
                }
            });

例外:

FATAL EXCEPTION: AsyncTask #2
        Process: com.petfinder.petfinder, PID: 17401

java.lang.RuntimeException: An error occured while executing doInBackground()
     at android.os.AsyncTask$3.done(AsyncTask.java:300)
     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
     at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
     at java.util.concurrent.FutureTask.run(FutureTask.java:242)
     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
     at java.lang.Thread.run(Thread.java:848)
  Caused by: java.lang.NoClassDefFoundError: com.petfinder.backend.model.userApi.UserApi$Builder
     at com.petfinder.petfinder.util.PetUtil.getUserApi(PetUtil.java:52)
     at com.petfinder.petfinder.ui.LoginActivity$UserLoginTask.doInBackground(LoginActivity.java:330)
     at com.petfinder.petfinder.ui.LoginActivity$UserLoginTask.doInBackground(LoginActivity.java:317)
     at android.os.AsyncTask$2.call(AsyncTask.java:288)
     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
     at java.lang.Thread.run(Thread.java:848) 
01-16 09:06:53.481 17401-17401/com.petfinder.petfinder D/ActivityThread: ACT-AM_ON_PAUSE_CALLED ActivityRecord{41dfff48 token=android.os.BinderProxy@

【问题讨论】:

  • 请用您所面临的错误的堆栈跟踪更新您的问题。

标签: java android google-app-engine


【解决方案1】:

发现问题出在过时的 google play 服务上。通过检查 Google Play 服务并更新过时的设备来修复它。

public void checkPlayServices() {
    int state = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);

    if (state == ConnectionResult.SUCCESS) {
        Toast.makeText(this, "SUCCESS", Toast.LENGTH_LONG).show();
    } else {
        Dialog dialog = GooglePlayServicesUtil.getErrorDialog(state, this, -1);
        dialog.show();
    }
}

【讨论】:

    猜你喜欢
    • 2012-04-16
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多