InvalidClassException - Read null attempting to read class descriptor for object

Tausendacht

Mitglied
Hallo,

ich erhalte beim Senden eines einfachen serialisierten Objekts innerhalb einer TCP-Verbindung folgenden Fehler:

Code:
java.io.InvalidClassException: Read null attempting to read class descriptor for object

Gesendet wird ein Objekt folgender Klasse:

Java:
public class CodeMessage implements Serializable 
{
	private static final long serialVersionUID = 3850374419322130176L;
	private int code;
	
	public CodeMessage(int code){this.code = code;  }
	
	public int getCode(){return code;}
}

Gesendet wird es von der Server-Seite:

Java:
public class TCPServer extends Thread 
{
    private ObjectOutputStream out;

    [ . . . ]

	public boolean sendMessage(Object object)
	{
		boolean success;
		if(out == null)
		{
			success = false;
		}
		else 
		{
			try {
				out.writeObject(object);
			} catch (IOException e) {	Log.e("TCPServer sendMessage()", e.getMessage());
                  return false;	}
			success =  true;
		}
		return success;
	}
}

Empfangen wird es von der Client-Seite:
Java:
public class TCPClient extends Thread 
{
    private ObjectInputStream in;

    [ . . . ]

    @Override
	public void run() 
	{
		super.run();
		
		try {			
			// messages-recieving-loop
			while (!isInterrupted())
			{
				// Try to read sent object
				Object message = in.readObject();				
				// pass it to the listener
				if ((message != null) && (messageListener != null))
				{
					messageListener.messageReceived(message);
				}
			}
		} catch (InvalidClassException e){ 
			Log.e("TCPClient.run() InvalidClassException", e.getMessage()); 
		} catch (Exception e){ Log.e("TCPClient.run()", e.getMessage()); }		
	}
}

Noch ein paar Anmerkungen:

1. Die Exception tritt beim Lesen des eingegangenen Objektes auf (Client, Zeile 17).

2. Bei dem Programm handelt es sich um eine Android-App, d.h. ich programmiere mit Eclipse und teste es dann auf 2 Samsung Galaxy Note 10.1. Beide greifen also auf die gleiche Quelldatei zu.

3. Früher im Programm wird bereits vom Client zum Server ein Objekt einer anderen Klasse gesendet, was problemlos funktioniert.


Ich hoffe, Ihr könnt mir weiterhelfen, was diesen Fehler auslöst und wie ich ihn beheben kann.
Danke!
 

Tausendacht

Mitglied
Hi,

Client und Server sind im gleichen Projekt geschrieben und greifen auf die gleiche Klasse zu.

Auf beiden Geräten ist die gleiche Version drauf (mehrfach "zeitgleich" neu installiert).

Die SUID ist habe ich nach der Programmierung der Klasse generieren lassen.
 

parabool

Bekanntes Mitglied
public class InvalidClassException
extends ObjectStreamException

Thrown when the Serialization runtime detects one of the following problems with a Class.

* The serial version of the class does not match that of the class descriptor read from the stream
* The class contains unknown datatypes
* The class does not have an accessible no-arg constructor

d.h. Du brauchst einen argumentlosen Konstruktor:
Java:
public CodeMessage(){
}
 

Tausendacht

Mitglied
Hi,
Ich glaube, dass hatte ich schon einmal probiert.

Ich hab's aber grad nochmal getestet: Argumentlosen Konstruktor hinzugefügt, SUID neu generiert, und auf beide Geräte neuinstalliert.
Leider gibt's wieder eine InvalidClassException...


Was bedeutet denn die Fehlerbeschreibung "Read null attempting to read class descriptor for object". Ich habe viele Forenbeiträge zu InvalidClassException gelesen, aber das stand nie dabei.
 
Zuletzt bearbeitet:

Kr0e

Gesperrter Benutzer
d.h. Du brauchst einen argumentlosen Konstruktor

Das stimmt nicht. Die Doc ist hier etwas ungenau. Die Klassen werden sowieso über Reflection instanziert, sogar private Konstruktoren mit Argumenten machen keine Probleme.

Was den Fehler angeht bin ich, sofern es wirklich Android spezifisch ist, so kann ich leider nichts dabei steuern.
 

parabool

Bekanntes Mitglied
Nun ja, da weis ich auch nicht wirklich weiter.
Das einzige was mir noch einfallen würde wäre, dass die Klasse vielleicht der Bean-Spezifikation
genügen muss (also noch eine Setter-Methode setCode braucht). Ist bei manchen Frameworks so.
 

Tausendacht

Mitglied
Hallo,

zunächst einmal Danke Euch beiden für die Hinweise. Leider hat die Setter-Methode auch keinen Fortschritt gebracht.

Ich habe das Programm mal testweise so umgeschrieben, dass beim Auftreten der Exception ein Objekt zurückgesendet wird, das dem Server meldet, dass im Client eine Exception aufgetreten ist.
Das Senden von Client zu Server klappt dabei jedes Mal problemlos.

Kann der Fehler also mit dem OutputStream des Servers bzw dem InputStream des Clients zusammenhängen? Dass die nicht richtig initialisiert sind oder sowas?
 

Tausendacht

Mitglied
Ich habe das Problem für mich gelöst, bzw vielmehr habe ich es umgangen.

Anstatt ein Objekt das das Interface Serializable implementiert zu übertragen habe ich das Objekt mittels GSON in JSON verpackt. War einfach und hat auf Anhieb geklappt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen Allgemeine Java-Themen 7
D Read JSON File Problem Allgemeine Java-Themen 9
S Read End Dead Allgemeine Java-Themen 2
S Read End Dead Allgemeine Java-Themen 1
T ImageIO.read -> Can`t read input file Allgemeine Java-Themen 11
thet1983 Input/Output read properties file from classpath Allgemeine Java-Themen 3
H Security Manager (IIOException: Can't read input file!) Allgemeine Java-Themen 2
I Javafx Open/Read und Tree Funktion Allgemeine Java-Themen 14
M Read end ded [PipedInputStream...] Allgemeine Java-Themen 0
M Threads synchroner Zugriff (add/delete/read) auf eine Liste Allgemeine Java-Themen 6
A RandomAccessFile.read(byte[] b) Allgemeine Java-Themen 9
1 Check read/write permission for file Allgemeine Java-Themen 4
J write / read Problem Allgemeine Java-Themen 9
E Durch System.in.read() blockierten Thread stoppen Allgemeine Java-Themen 10
N read streams umleiten Allgemeine Java-Themen 2
G Read only Eclipse- Datei Allgemeine Java-Themen 5
W Konflikt byte->int, in.read->arraycopy Allgemeine Java-Themen 7
M BufferedReader.read(char[] cbuf) liefert falsche Werte? Allgemeine Java-Themen 4
A Probleme mit ImageIO.read( . ) Allgemeine Java-Themen 12
S NoClassDefFoundException - ImageIO.read - Applet Allgemeine Java-Themen 3
S java.io.InputStream.read(byte[] b) überschreiben Allgemeine Java-Themen 33
A System.in.read() Problem Allgemeine Java-Themen 6
R read/readline blockiert Allgemeine Java-Themen 5
F Zu große Werte beim byteweisen Lesen mit BufferedReader.read Allgemeine Java-Themen 5
C ImageIO die read-Methode liefert mir ein null- Wert zurück Allgemeine Java-Themen 10
M InputStream.read abbrechen Allgemeine Java-Themen 2
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
Zrebna SonarLint: Warum kein Null-Referencing-CodeSmell-Hint hier? Allgemeine Java-Themen 23
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
8u3631984 Argument Captor liefert NULL zurück Allgemeine Java-Themen 2
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
J Zahlen Abstand zur Null bestimmen Allgemeine Java-Themen 11
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
S An internal error occurred during: Launching null argument Allgemeine Java-Themen 1
S Validation Null aber nicht Blank und muss Email sein Allgemeine Java-Themen 22
L Google Guice Field Injection returns null Allgemeine Java-Themen 2
E RMI NULL-Pointer-Exeception wenn der RMI-Proxy eine Methode deligiert Allgemeine Java-Themen 2
J Java Objekte = null, Garbagecollector Allgemeine Java-Themen 12
N MsgPack - Null Check Allgemeine Java-Themen 5
T JasperReports mit Null Pointer Allgemeine Java-Themen 3
DanielsLPecke Compiler-Fehler Warum ist der String null? Allgemeine Java-Themen 10
M Warten bis Variabel nicht null ist Allgemeine Java-Themen 18
Thallius Simple JSON Parser Error null Allgemeine Java-Themen 6
M Null byte in verschiedenen charsets Allgemeine Java-Themen 2
S Lambda Ausdrücke: @FunctionalInterface Instanzen auf null prüfen Allgemeine Java-Themen 9
B [Android] EditText-Object ist null - Nimmt nicht den Wert des enthaltenen Textfeldes ein Allgemeine Java-Themen 2
D Java Process OutputStream ist null Allgemeine Java-Themen 4
O log4j, Problem bei Ausgabe null-Wert Allgemeine Java-Themen 0
D Problem mit führender Null bei Schlüsselerzeugung Allgemeine Java-Themen 5
T Variablenübergabe liefert immer null Allgemeine Java-Themen 13
K Image beim catchen ist immer null Allgemeine Java-Themen 9
B Load of Known null Value Allgemeine Java-Themen 9
W Kleine Frage zu Null-Pinter-Exception Allgemeine Java-Themen 21
T Array Sortieren (null Werte ans Ende) Allgemeine Java-Themen 2
S Null Pointer Exception bei BufferedReader Allgemeine Java-Themen 4
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
Tobse Vererbung null aus Elternklasse "dominant"? Allgemeine Java-Themen 15
E Queue: Wie kann hier ein null-Pointer Exception auftreten?! Allgemeine Java-Themen 11
I newInstance() liefert null zurück Allgemeine Java-Themen 4
R Attribut null Allgemeine Java-Themen 6
C Regex: Zahl ohne führende Null Allgemeine Java-Themen 13
E rückgabewert ist immer null Allgemeine Java-Themen 2
N List auf null prüfen Allgemeine Java-Themen 2
TiME-SPLiNTER Von Unix, InputStreams und Null Bytes Allgemeine Java-Themen 2
R dateFormat - Uhr fängt nicht bei null an Allgemeine Java-Themen 2
P Null in ArrayList Allgemeine Java-Themen 3
N Strings mit null wiedergabe Splitten Allgemeine Java-Themen 4
mongole Formatter + null Allgemeine Java-Themen 4
X Prozess-Objekt nach Ausführung der destroy-Methode null oder nicht null ? Allgemeine Java-Themen 10
A Umgang mit null Allgemeine Java-Themen 16
L Object = null? Allgemeine Java-Themen 16
L null pointer exception Allgemeine Java-Themen 10
nrg Leere Objektreferenz mit != null vergleichen Allgemeine Java-Themen 4
J Null Pointer in der compare-Methode des Comparators? Allgemeine Java-Themen 18
T Set.contains() auch false wenn value == null? Allgemeine Java-Themen 4
D Matrix, ArrayList, null-Zellen Allgemeine Java-Themen 6
F Hibernate speichern - Null Allgemeine Java-Themen 5
knuckles12 null pointer exception bei arrays Allgemeine Java-Themen 6
T WeakHashMap: Wie "null" effizient abfangen? Allgemeine Java-Themen 5
N Null Durchblick in Java, Jobwechsel? Allgemeine Java-Themen 19
M nichtreferenzierte Objekte auf NULL setzen -> Performance Allgemeine Java-Themen 4
S JFreeChart LineChart Punkte über NULL Werte hinweg verbinden Allgemeine Java-Themen 5
N Array mit null Werten filtern Allgemeine Java-Themen 5
S Combobox --> liefer null? Allgemeine Java-Themen 3
A java.net.UnkownHostException: null bei jar-File Allgemeine Java-Themen 16
B Null Pointer Exception bei Canvas-objekt-Aufruf Allgemeine Java-Themen 12
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
R if (obj == null || obj.isEmpty()) Allgemeine Java-Themen 21
P <null> in einer DB abfragen Allgemeine Java-Themen 4
G Nicht abgefangene Null-Pointer-Exception Allgemeine Java-Themen 2
P Image auf einem Panel mit null-Layout Allgemeine Java-Themen 8
M getResourceAsStream immer null Allgemeine Java-Themen 4
R Array komplett auf null setzen Allgemeine Java-Themen 10
A JasperReport Detail bringt null bei Datenübergabe Allgemeine Java-Themen 4
S Null Pointer Exception Allgemeine Java-Themen 10
S instanceof und null Allgemeine Java-Themen 7
M Führende Null in einem Datum Allgemeine Java-Themen 3
L null != null ? Allgemeine Java-Themen 16
Redfrettchen Rückgabe nicht sinnvoll: Exception oder null zurück? Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben