各位大哥:帮我看看这个错误原因:java.lang.ClassCastException

hxgsea1978 2005-09-07 11:13:10
1.错误原因:
java.lang.ClassCastException: untitled3.UserTest_q8c1sa_ELOImpl
at untitled3.UT.FindAll()Ljava.lang.StringBuffer;(UT.java:89)
at jsp_servlet.__test1._jspService(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(__test1.java:142)
at weblogic.servlet.jsp.JspBase.service(Ljavax.servlet.ServletRequest;Ljavax.servlet.ServletResponse;)V(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run()Ljava.lang.Object;(ServletStubImpl.java:971)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax.servlet.ServletRequest;Ljavax.servlet.ServletResponse;Lweblogic.servlet.internal.FilterChainImpl;)V(ServletStubImpl.java:402)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax.servlet.ServletRequest;Ljavax.servlet.ServletResponse;Lweblogic.servlet.internal.FilterChainImpl;)V(ServletStubImpl.java:446)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax.servlet.ServletRequest;Ljavax.servlet.ServletResponse;)V(ServletStubImpl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run()Ljava.lang.Object;(WebAppServletContext.java:6350)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic.security.subject.AbstractSubject;Ljava.security.PrivilegedAction;)Ljava.lang.Object;(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(Lweblogic.security.acl.internal.AuthenticatedSubject;Lweblogic.security.acl.internal.AuthenticatedSubject;Ljava.security.PrivilegedAction;)Ljava.lang.Object;(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(Lweblogic.servlet.internal.ServletRequestImpl;Lweblogic.servlet.internal.ServletResponseImpl;)V(WebAppServletContext.java:3635)
at weblogic.servlet.internal.ServletRequestImpl.execute(Lweblogic.kernel.ExecuteThread;)V(ServletRequestImpl.java:2585)
at weblogic.kernel.ExecuteThread.execute(Lweblogic.kernel.ExecuteRequest;)V(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:170)
at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source)

我的程序是:程序的功能是查询出所有的记录并将其显示出来
1.我定义了个构造函数: TestItem
package untitled3;
import java.io.Serializable;
import java.lang.*;
public class TestItem implements Serializable {
public long id;
public String name;
public int age;
public String sex;
public String password;
public TestItem() {
}
}

2.EJB(UserTestBean)
public Collection ejbFindAll() throws FinderException {
Collection result;
try
{
result=FindAll();
}catch (Exception ex)
{
throw new EJBException (ex.getMessage() );
}
if (result.isEmpty())
{
throw new ObjectNotFoundException ("No rows found");
}
return result;
}

private Collection FindAll() throws SQLException
{
String name,sex,password;
long id;
int age;
String sql="select id,name,age,sex,password from "+TableName+"";
PreparedStatement ps=con.prepareStatement(sql);
ResultSet rs=ps.executeQuery() ;
TestItems=new ArrayList() ;
while (rs.next())
{
TestItem t=new TestItem();
t.id=rs.getLong(1);
t.name=rs.getString(2);
t.age=rs.getInt(3);
t.sex=rs.getString(4);
t.password=rs.getString(5);
TestItems.add(t);
}
ps.close() ;
return TestItems;
}

3.JavaBean 中显示所有提出所有数据:
public StringBuffer FindAll() throws FinderException {
Collection rs=UTH.findAll() ;
StringBuffer buffer=new StringBuffer() ;
Iterator i=rs.iterator() ;
buffer.append("<table border=0>");
buffer.append("<tr>");
buffer.append("<td width=70>学号</td>");
buffer.append("<td width=150>姓名</td>");
buffer.append("<td width=70>年龄</td>");
buffer.append("<td width=70>性别</td>");
buffer.append("<td width=200>密码</td>");
buffer.append("</tr>");
while (i.hasNext())
{
buffer.append("<tr>");
TestItem t=new TestItem();
TestItem TI=(TestItem)i.next();//此处出错,将TestItem换成UserTestBean 能输出数据,但全为NULL//
buffer.append("<td>"+String.valueOf(TI.id) +"</td>") ;
buffer.append("<td>"+TI.name+"</td>") ;
buffer.append("<td>"+String.valueOf(TI.age)+"</td>") ;
buffer.append("<td>"+TI.sex+"</td>") ;
buffer.append("<td>"+TI.password+"</td>") ;
buffer.append("</tr>") ;
}
buffer.append("</table>");
return buffer;
}
请各位大哥帮帮小弟

...全文
254 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mail25 2005-09-08
  • 打赏
  • 举报
回复
得到的和你要转换的类型不一样啊,肯定会出错的啦!
lancelobb 2005-09-07
  • 打赏
  • 举报
回复
你的UTH哪来的?findAll()在哪定义的?
要贴就贴完整一点
hxgsea1978 2005-09-07
  • 打赏
  • 举报
回复
在线等待,我用的是weblogic8.1sp2+sql2000sp2+jbuiler2005
hxgsea1978 2005-09-07
  • 打赏
  • 举报
回复
这样得到的类型是:untitled3.UserTest_q8c1sa_ELOImpl
mail25 2005-09-07
  • 打赏
  • 举报
回复
Iterator i 里的元素类型和你要转换的类型不一致,错误信息是类型转换异常
加上这句看看元素的真正类型,再搞一下吧!
System.out.println("Iterator "+i+" ::::"+i.next().getClass());
hxgsea1978 2005-09-07
  • 打赏
  • 举报
回复
能帮我解决此问题的,我给他50分
hxgsea1978 2005-09-07
  • 打赏
  • 举报
回复
能帮我解决的,给50分
lancelobb 2005-09-07
  • 打赏
  • 举报
回复
楼主大哥
你的rs是collection(ArrayList也是collection的子类)
你的i是 Iterator i=rs.iterator() ;
i.next()也是collection

但是TestItem是你自己定义的类,也不是继承自collection
TestItem TI=(TestItem)i.next();//这样肯定会转型出错的吧
hxgsea1978 2005-09-07
  • 打赏
  • 举报
回复
UTH是ejb(UserTestBean)类

package untitled3;

import java.util.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.*;
import javax.ejb.*;
import java.sql.*;
import java.lang.*;

public class UT {
public Long id=new Long(1) ;
public String name="1";
public Integer age;
public String sex;
public String password;
UserTestHome UTH;
public ArrayList TestItems;

public UT() throws SQLException {
try
{
Context initial=new InitialContext() ;
UTH=(UserTestHome)initial.lookup("UserTestLocal");
}
catch(Exception e)
{
throw new SQLException ("ut+111111");
}
}
public void InsertUser() throws SQLException {
try
{
UserTest user=UTH.create(id) ;
name=user.getName() ;
}
catch(DuplicateKeyException de)
{
throw new SQLException ("id:"+id+"已经存在!");
}
catch(CreateException ce)
{
throw new SQLException ("id:"+id+"新境失败!");
}
catch(Exception e)
{
throw new SQLException (e.toString()+"中国营农场");
}
}
public StringBuffer FindAll() throws FinderException {
Collection rs=UTH.findAll() ;
StringBuffer buffer=new StringBuffer() ;
Iterator i=rs.iterator() ;
buffer.append("<table border=0>");
buffer.append("<tr>");
buffer.append("<td width=70>学号</td>");
buffer.append("<td width=150>姓名</td>");
buffer.append("<td width=70>年龄</td>");
buffer.append("<td width=70>性别</td>");
buffer.append("<td width=200>密码</td>");
buffer.append("</tr>");
while (i.hasNext())
{
buffer.append("<tr>");
TestItems=new ArrayList() ;
TestItem TI=(TestItem)i.next() ;
buffer.append("<td>"+String.valueOf(TI.getId()) +"</td>") ;
buffer.append("<td>"+TI.getName()+"</td>") ;
buffer.append("<td>"+String.valueOf(TI.getAge())+"</td>") ;
buffer.append("<td>"+TI.getSex()+"</td>") ;
buffer.append("<td>"+TI.getPassword()+"</td>") ;
buffer.append("</tr>") ;
}
buffer.append("</table>");
return buffer;
}
public void setName(String name)
{
this.name =name;
}
public String getName()
{
return name;
}

}

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧