2013-08-23 4 views
0

Je souhaite lire un objet à partir du stockage interne Android.ClassNotFoundException se produit lors de l'appel ObjectInputStream.readobject dans Android

Ce qui suit est mon code. J'écris une fonction statique pour lire l'objet du fichier dans la même classe. Aucune idée de l'origine de cette exception. Vraiment apprécier si vous pouviez donner quelques suggestions.

merci.

package com.crescent.programmercalculator; 

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.io.Serializable; 

import android.util.Log; 
import android.content.Context; 

public class CalculateConfigurations implements Serializable{ 

    static String configLocation="configFile"; 

    public short radix; 

    CalculateConfigurations(){ 
     radix=16; 
    } 

    public static CalculateConfigurations loadObjectFromFile(Context context){ 
     try { 
      FileInputStream fis = context.openFileInput(configLocation); 
      ObjectInputStream is = new ObjectInputStream(fis); 
      CalculateConfigurations config = (CalculateConfigurations) is.readObject(); 
      is.close(); 
      fis.close(); 
      return config; 
     } catch (FileNotFoundException e) { 
      // first use case 
      Log.v("CalculateConfigurations", "first init for configuration file"); 

      return new CalculateConfigurations(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      Log.e("CalculateConfigurations", "Fatal error, configuration file may be broken"); 

      return new CalculateConfigurations(); 
     } 
     catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
      Log.e("CalculateConfigurations", "Fatal error, unknown"); 

      return new CalculateConfigurations(); 
     } 
    } 
} 
+0

S'il vous plaît poster la trace de la pile! – Eric

+0

Cela indique presque toujours qu'une classe qui possède une instance dans le flux sérialisé ne se trouve pas dans l'une de vos bibliothèques d'exécution. Votre sortie LogCat vous indiquera quelle classe. – chrylis

+0

soudainement cela fonctionne après la reconstruction/recharger à mon appareil Android. je vous remercie pour toutes les suggestions – user1817588

Répondre

0

ClassNotFoundException

c'est dans la plupart des cas, certains dans vos fichiers mixup xml. Si vous postez à la fois stacktrace et le bon fichier xml, il est facile de le réparer!

0

Lire sur readObject

exceptions sont levées pour des problèmes avec le InputStream et pour classes qui ne doivent pas être désérialisés. Toutes les exceptions sont fatales à l'InputStream et le laisse dans un état indéterminé; il est jusqu'à l'appelant d'ignorer ou de récupérer l'état du flux.

Étant donné que vous essayez de lire une bibliothèque interne android, elle ne peut pas être convertie en classe personnalisée. D'où le ClassNotFoundException.

Espérons que cela aide.

0

Je rencontre le même problème aujourd'hui. Je ne sais pas comment la sérialisation/désérialisation est faite mais je remarque que c'est un processus très instable.

Si vous numérotez des objets et mettez de la mémoire, vous ne pouvez pas modifier facilement le type de données/nom de classe. Si cette exception est générée, supprimez l'application de l'appareil et réinstallez-la. J'espère, ça aide certains développeurs :)

Questions connexes