Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

You Just Got Served: InvalidClassException, Could it Be Your Server?

DZone's Guide to

You Just Got Served: InvalidClassException, Could it Be Your Server?

That InvalidClassException error could be your server's fault. Read on to discover the root cause of this perplexing issue.

· Database Zone ·
Free Resource

Databases are better when they can run themselves. CockroachDB is a SQL database that automates scaling and recovery. Check it out here.

Yesterday I got a strange exception:

2015-09-29 12:38:07,299 ERROR MyProjectExceptionHandler - Exception: java.lang.RuntimeException: java.io.InvalidClassException: MyProject.SomeClass; local class incompatible: stream classdesc serialVersionUID = 7209155407778600981, local class serialVersionUID = 7074523269695874819

After backtracking several revisions, I identified the commit that caused the exception for the first time. In this commit, I changed a class in our base project. As it is with many 3-tier-architectures, we have a client and a server project that use a common base project. Changes in this base project have to be reflected both on the server and the client. When I got the error, I was connecting to a remote server than ran an older version of the code. Hence this server could not know about my changes in the base project. The solution was to start a local server that knew about my change.

This is just a small note - however it would have saved me a lot of time searching for the cause of the problem.

TL;DR

If running in an InvalidClassException, think about your architecture: Is a component of your system using another version of your codebase?

Databases should be easy to deploy, easy to use, and easy to scale. If you agree, you should check out CockroachDB, a scalable SQL database built for businesses of every size. Check it out here. 

Topics:
java ,database

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}