NoMethodError en el objeto de ejecución estándar de Android

Heya, tengo un error muy extraño que no puedo resolver cuando intento serializar objetos a JSON en todas las plataformas android, de 1.5 a 2.2 (tanto en teléfonos como emuladores).

Recibo este error:

E/AndroidRuntime(21017): Uncaught handler: thread AsyncTask #2 exiting due to uncaught exception E/AndroidRuntime(21017): java.lang.RuntimeException: An error occured while executing doInBackground() E/AndroidRuntime(21017): at android.os.AsyncTask$3.done(AsyncTask.java:200) E/AndroidRuntime(21017): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) E/AndroidRuntime(21017): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) E/AndroidRuntime(21017): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) E/AndroidRuntime(21017): at java.util.concurrent.FutureTask.run(FutureTask.java:137) E/AndroidRuntime(21017): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) E/AndroidRuntime(21017): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) E/AndroidRuntime(21017): at java.lang.Thread.run(Thread.java:1096) E/AndroidRuntime(21017): Caused by: java.lang.NoSuchMethodError: org.json.JSONStringer.object E/AndroidRuntime(21017): at com.qype.radar.api.json.JsonSerializationHelper.startModel(JsonSerializationHelper.java:119) E/AndroidRuntime(21017): at com.qype.radar.api.json.JsonSerializationHelper.serializeCheckin(JsonSerializationHelper.java:94) E/AndroidRuntime(21017): at com.qype.radar.api.QypeApiImpl.submitCheckin(QypeApiImpl.java:157) E/AndroidRuntime(21017): at com.qype.radar.activities.tasks.SubmitCheckinTask.doCheckedInBackground(SubmitCheckinTask.java:29) E/AndroidRuntime(21017): at com.qype.radar.activities.tasks.SubmitCheckinTask.doCheckedInBackground(SubmitCheckinTask.java:1) E/AndroidRuntime(21017): at com.github.droidfu.concurrent.BetterAsyncTask.doInBackground(BetterAsyncTask.java:154) E/AndroidRuntime(21017): at android.os.AsyncTask$2.call(AsyncTask.java:185) E/AndroidRuntime(21017): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) E/AndroidRuntime(21017): ... 4 more 

Al llegar a la línea 'stringer.object' de 'startModel ()' al serializar una revisión en este código:

 package com.qype.radar.api.json; import org.json.JSONException; import org.json.JSONStringer; import com.qype.radar.model.Review; public class JsonSerializationHelper { private JSONStringer stringer = new JSONStringer(); ... public String serializeReview(Review review) throws JSONException { startModel("review"); value("rating", review.getRating()); value("language", review.getLanguage()); value("content", review.getText()); return endModel(); } ... private JSONStringer startModel(String name) throws JSONException { stringer.object(); stringer.key(name); stringer.object(); return stringer; } private String endModel() throws JSONException { stringer.endObject(); stringer.endObject(); return stringer.toString(); } private void value(String key, String value) throws JSONException { stringer.key(key); stringer.value(value); } private void value(String key, int value) throws JSONException { stringer.key(key); stringer.value(value); } } 

Lo más extraño de esto es que el código se compila bien y al depurar, el objeto JSONStringer se instancia correctamente, pero cualquier llamada a él arroja este error. También puedo, usando la reflexión de Java, descubrir que la clase existe, y los métodos que puedo recuperar del objeto de la clase están todos allí, y pueden ser invocados sin error.

El paquete org.json es un estándar en Android, y está disponible desde la versión 1 de la API.

Cualquier ayuda para resolver este problema sería apreciada, ya que simplemente no sé dónde buscar.

Resulta que fue un problema con el Android JAR de Maven Central. Tiene una dependencia de los JAR JSON, pero los que están rotos en Maven Central (la clase JSONStringer está vacía, sólo define un método toString ()).

Si también está utilizando Maven, puede arreglar esto mediante la implementación del tarro androide del SDK utilizando maven-android-sdk-deployer y desde allí.

Ver este hilo

  • Problema de desplazamiento Infinito Infinito de RecyclerView
  • Retrofit 2 - obtiene error-objeto JSON (POJO pocos para la misma solicitud)
  • Serializar objeto personalizado que contiene objetos JodaTime en JSON
  • Obtener una matriz de CLAVES para cada elemento bajo jsonarray
  • Json Parsing error en mi proyecto
  • Mantener un campo JSON como String al deserializar usando Jackson
  • ¿Cómo convertir una matriz json en un objeto json en android usando gson?
  • Cuerpo del poste de OkHttp como JSON
  • Cómo probar si un JSONObject es nulo o no existe
  • Archivo o base de datos? - Mejores prácticas para guardar objetos en dispositivos Android
  • ¿Cómo se puede leer un archivo json en Android usando Ionic y AngularJS Frameworks?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.