[Biojava-dev] [Bug 2359] New: SingleDP deserialization fails
bugzilla-daemon at portal.open-bio.org
bugzilla-daemon at portal.open-bio.org
Sat Sep 8 23:02:38 UTC 2007
http://bugzilla.open-bio.org/show_bug.cgi?id=2359
Summary: SingleDP deserialization fails
Product: BioJava
Version: 1.5
Platform: PC
OS/Version: Linux
Status: NEW
Severity: major
Priority: P2
Component: dist/dp
AssignedTo: biojava-dev at biojava.org
ReportedBy: daniel.rohrbach at web.de
it isn't possible to load an instance of SingleDP via serialization. SingleDP
which is serializable inherits from DP which is not serializable . Loading the
Object works well.
I used biojava 1.5 latest build 9/8/07 2:22 AM but the same exception occurs in
all 1.5
the reason for the bug is that SingleDP extends DP which is not serializable.
In that case it must implement a no args constructor but it doesn't!
Because of that the same should occur for PairwiseDP
the stack trace:
java.io.InvalidClassException: org.biojava.bio.dp.onehead.SingleDP;
org.biojava.bio.dp.onehead.SingleDP; no valid constructor
at
java.io.ObjectStreamClass.checkDeserialize(ObjectStreamClass.java:713)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1733)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at biojavabugs.SingleDBBug.main(SingleDBBug.java:92)
Caused by: java.io.InvalidClassException: org.biojava.bio.dp.onehead.SingleDP;
no valid constructor
at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:471)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:310)
and the code i used to cause the bug:
//create the HMM
ProfileHMM hmm = new ProfileHMM(ProteinTools.getAlphabet(),
12,
DistributionFactory.DEFAULT,
DistributionFactory.DEFAULT,
"biojava profile hmm");
//create an SingleDP object which we want to save and load
DP dp = (SingleDP) DPFactory.DEFAULT.createDP(hmm);
try {
//
// saving
//
// the filename
File load = new File("/home/dani/Desktop/dp");
FilePermission fp = new FilePermission(load.getAbsolutePath(),
"write");
if(!load.createNewFile())
{
throw new IOException("file '" + load.getAbsolutePath()
+ "' could not be created!");
}
FileOutputStream fos = new FileOutputStream(load);
ObjectOutputStream oos = new ObjectOutputStream(fos);
//store object to disk
oos.writeObject(dp);
oos.close();
//
// loading
//
// try to load the SingleDP object
fp = new FilePermission(
load.getAbsolutePath(), "read");
FileInputStream fis = new FileInputStream(load);
ObjectInputStream ois = new ObjectInputStream(fis);
Vector<Object> v = new Vector<Object>();
//here is where the EXCEPTION occurs
Object o = ois.readObject();
v.add(o);
System.out.println("loaded Object!");
// System.out.println(obj.toString());
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
--
Configure bugmail: http://bugzilla.open-bio.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
More information about the biojava-dev
mailing list