Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Java (http://www.velocityreviews.com/forums/f30-java.html)
-   -   Struts/jsp Class Cast Exception (http://www.velocityreviews.com/forums/t125914-struts-jsp-class-cast-exception.html)

david 08-22-2003 01:37 PM

Struts/jsp Class Cast Exception
 
I'm in the midst of developing a small webapp, I'm a beginner. And,
I've run into an error I don't understand.

I'm posting a session attribute in an Action...
curSession.setAttribute("testorg", O); where O is a vector containing
orgVO class objects.

Here is my jsp...
---------------------------------------------------------------------------
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="Beans.*, java.util.*" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%
orgVO[] newOrg = new orgVO[1];
newOrg[0] = new orgVO("david", "test");
out.println(newOrg[0].getorgName());


HttpSession catalogSession = request.getSession(true);
Vector test = (Vector) catalogSession.getAttribute("testorg");
Object [] orgtest = test.toArray();
Object d = orgtest[0];
Class x = d.getClass();
String classX = x.getName();
out.println("**" + classX + "**");
//orgVO testd = (orgVO) d;

if (test == null) {out.println("test data not received");} else {
int i = test.size();
out.println("size = " + i);
for (int x1 = 0; x1 < i; x1++){
// orgVO t = (orgVO) test.elementAt(x);
// out.println(t.getorgName());
// out.println(test.elementAt(x).getorgName());
}
out.println("test data received");}
%>


//<logic:iterate id="element" collection="<%=test %>"
type="Beans.orgVO">
//<bean:write name="element" property="orgName" filter="true"/>
//</logic:iterate>


<html:html locale="true">
<head>
<title><bean:message key="index.title" /></title>
<html:base/>
</head>

</html:html>
---------------------------------------------------------------

when I run the jsp with the above as is (with the casting commented
out) it works. I see that there are 83 objects in the vector, and
that they are of class orgVO. Additionally, the initial section
instantiates an orgVO class and I'm able to print out the name.
However, If i uncomment the code I get a class cast exception for
orgVO - i get this same exception with the using the iterate bean and
with the java code.

error:

org.apache.jasper.JasperException: orgVO
at org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:241)...

root cause

java.lang.ClassCastException: orgVO
at org.apache.jsp.catalog_jsp._jspService(catalog_jsp .java:116)
at org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:853)...


Any one have any ideas/suggestions?

thanks,
david

Dave Glasser 08-23-2003 01:21 AM

Re: Struts/jsp Class Cast Exception
 
liberal_id@yahoo.com (david) wrote on 22 Aug 2003 06:37:38 -0700 in
comp.lang.java.programmer:

>I'm in the midst of developing a small webapp, I'm a beginner. And,
>I've run into an error I don't understand.
>
>I'm posting a session attribute in an Action...
>curSession.setAttribute("testorg", O); where O is a vector containing
>orgVO class objects.
>
>Here is my jsp...


(snip)

>when I run the jsp with the above as is (with the casting commented
>out) it works. I see that there are 83 objects in the vector, and
>that they are of class orgVO. Additionally, the initial section
>instantiates an orgVO class and I'm able to print out the name.
>However, If i uncomment the code I get a class cast exception for
>orgVO - i get this same exception with the using the iterate bean and
>with the java code.
>
>error:
>
>org.apache.jasper.JasperException: orgVO
> at org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:254)
> at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:295)
> at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:241)...
>
>root cause
>
>java.lang.ClassCastException: orgVO
> at org.apache.jsp.catalog_jsp._jspService(catalog_jsp .java:116)
> at org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:137)
> at javax.servlet.http.HttpServlet.service(HttpServlet .java:853)...
>
>
>Any one have any ideas/suggestions?



It probably has to do with classloaders. The objects in your vector
are of the orgV0 class, but their class was loaded by a different
classloader than the JSP's, and it was not a direct ancestor of the
JSP's classloader. Try making absolutely sure that the orgV0 class is
not in the system classpath when Tomcat starts, or in a jar file in
Tomcat's lib directory. Only let it be beneath the WEB-INF/classes
directory for your web app.

If that doesn't work, try putting the orgV0 class *in* your system
classpath and see if that helps. If Tomcat is following the rules for
classloaders, then the orgV0 class should only be loaded by the system
classloader, however that might not be the case.



----
Check out QueryForm, a free, open source, Java/Swing-based
front end for relational databases.

http://qform.sourceforge.net


All times are GMT. The time now is 08:03 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.