Hi,
Sorry for being little over descriptive here. I have an issue deserializing
a file that contains a Map>. These POJO bean classes are stored in a jar
file uder web-app/lib. I can deserialize the file from a standalone java
program, from tomcat web app when tomcat is started from within Eclipse IDE;
but I can not get it to work from the same webapp when tomcat is started in
standalone mode (not from within IDE). I have some javabeans added into a
List object which is added to a LinkedHashMap object in the serialized file.
This is the partial stack trace -
java.lang.ClassNotFoundException: com.biz.icomp.dbi.DBCustomer
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:585)
This is the code -
FileInputStream fis = new FileInputStream(serializedFilePath);
ObjectInputStream ois = new ObjectInputStream(fis);
Map map = (Map)ois.readObject();
ois.close();
I even tried to override the default class loader as -
ClassLoader old = Thread.currentThread().getContextClassLoader();
FileInputStream fis = new FileInputStream(serializedFilePath);
ObjectInputStream ois = new ObjectInputStream(fis);
File root = new File();
URLClassLoader urlLoader = new URLClassLoader(new URL[] { root.toURL() },
Thread.currentThread().getContextClassLoader());
Map map = (Map)ois.readObject();
ois.close();
Thread.currentThread().setContextClassLoader(old);
It still doesn't work. I also tried printing the default class loader and
the loader after overriding it. This is what I see -
>When run from a standalone java class-
Default Class Loader -> [EMAIL PROTECTED]
URLClassLoader Class Loader -> [EMAIL PROTECTED]
>When run from tomcat started directly (not from IDE)-
Default Class Loader -> WebappClassLoader
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
[EMAIL PROTECTED] (these last 3 lines
are automatically printed)
URLClassLoader Class Loader -> [EMAIL PROTECTED]
>When run from tomcat started within Eclipse-
Default Class Loader -> WebappClassLoader
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
[EMAIL PROTECTED]
URLClassLoader Class Loader -> [EMAIL PROTECTED]
The class which is not found by the class loader, is actually there in a jar
file in WEB-IN\lib. As I said, it works when I start tomcat from eclipse. Am
I missing anything? Appreciate your help.
--
View this message in context:
http://www.nabble.com/ClassNotFoundException-when-deserialized-from-tomcat-web-app-tf3950085.html#a11206616
Sent from the Tomcat - Dev mailing list archive at Nabble.com.