Hi, Sorry for being little over descriptive here. I have an issue deserializing a file that contains a Map<String, List<POJOs>>. These POJO bean classes are stored in a jar file uder web-app/lib. I use classes from this jar in the rest of the application. I can deserialize the file from a standalone java program and, 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(<path of jar file containing the DBCustomer and similar classes>); 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 - ><u>When run from a standalone java class-</u> Default Class Loader -> [EMAIL PROTECTED] URLClassLoader Class Loader -> [EMAIL PROTECTED] ><u>When run from tomcat started directly (not from IDE)-</u> 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] ><u>When run from tomcat started within Eclipse-</u> Default Class Loader -> WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: [EMAIL PROTECTED] URLClassLoader Class Loader -> [EMAIL PROTECTED] So, the class loaders are same whether or not the tomcat is started from within IDE. The class which is not found by the class loader, is actually there in a jar file in WEB-IN\lib. I tried everything I found on google. I copied the jar file in common/lib of tomcat installation but it didn't help. As I said, it works when I start tomcat from eclipse. Am I missing anything? If this is a classpath issue, I am not sure how should I resolve it as the web app contains all classes it needs to use. Appreciate your help. -- View this message in context: http://www.nabble.com/ClassNotFoundException-when-deserialized-from-tomcat-web-app-tf3951988.html#a11212063 Sent from the Tomcat - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]