求救!!!我快疯了java.lang.ClassCastException错误

lhack 2008-08-19 10:55:44
Servlet.service() for servlet action threw exception
java.lang.ClassCastException: com.guandong.oa.model.Person$$EnhancerByCGLIB$$d70c6a32
at com.guandong.oa.manager.impl.PersonManagerImpl.addPerson(PersonManagerImpl.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:203)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:209)
at $Proxy1.addPerson(Unknown Source)
at com.gudong.oa.web.action.PersonAction.add(PersonAction.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.gudong.oa.web.PagerFilter.doFilter(PagerFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
个人感觉是编码错误但不知道怎么改

...全文
417 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhj92lxs 2008-08-23
  • 打赏
  • 举报
回复
(Orgnization)getHibernateTemplate().load(Person.class,orgId)

看看类型转换是否正确
lhack 2008-08-22
  • 打赏
  • 举报
回复
struts-config.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="orgForm" type="com.gudong.oa.web.forms.OrgActionForm"></form-bean>
<form-bean name="personForm" type="com.gudong.oa.web.forms.PersonActionForm"></form-bean>
</form-beans>
<global-exceptions>
<exception key="errors.detail"
type="com.guandong.oa.SystemException"
scope="request" path="/common/exception.jsp"
handler="com.gudong.oa.web.SystemExceptionHandler"></exception>
</global-exceptions>
<global-forwards>
<forward name="pub_add_success" path="/common/pub_add_success.jsp"></forward>
<forward name="pub_del_success" path="/common/pub_del_success.jsp"></forward>
<forward name="pub_update_success" path="/common/pub_update_success.jsp"></forward>
</global-forwards>
<action-mappings>
<action path="/org"
type="org.springframework.web.struts.DelegatingActionProxy"
name="orgForm"
scope="request"
parameter="method"

>

<!--<exception key="errors.detail" type="com.guandong.oa.SystemException" scope="request" path="/common/exception.jsp"></exception>
--><!--<forward name="exception" path="/common/exception.jsp"></forward>
--><forward name="index" path="/org/index.jsp"></forward>
<forward name="add_input" path="/org/add_input.jsp"></forward>
<forward name="select" path="/org/select.jsp"></forward>
</action>
<action path="/person"
type="org.springframework.web.struts.DelegatingActionProxy"
name="personForm"
scope="request"
parameter="method"

>
<forward name="index" path="/person/index.jsp"></forward>
<forward name="add_Input" path="/person/add_input.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="MessageResources" />
</struts-config>

package com.gudong.oa.web.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.guandong.oa.manager.OrgManager;
import com.guandong.oa.model.Orgnization;
import com.gudong.oa.web.forms.OrgActionForm;

public class OrgAction extends DispatchAction {
private OrgManager orgManager;

@Override
protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
OrgActionForm oaf = (OrgActionForm) form;

request.setAttribute("pm", orgManager.findOrgs(oaf.getParentId()));

int ppid = 0;

if (oaf.getParentId() != 0) {

Orgnization org = (Orgnization) orgManager.findOrg(oaf.getParentId());

Orgnization parent = org.getParent();

if (parent != null) {

ppid = parent.getId();

}

}
request.setAttribute("ppid", ppid);

if(oaf.isSelect()){
return mapping.findForward("select");
}

return mapping.findForward("index");
}

public ActionForward add_input(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return mapping.findForward("add_input");
}

public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
OrgActionForm oaf = (OrgActionForm) form;

Orgnization org = new Orgnization();

BeanUtils.copyProperties(org, oaf);

orgManager.addOrg(org, oaf.getParentId());

return mapping.findForward("pub_add_success");
}

public ActionForward del(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
OrgActionForm oaf = (OrgActionForm) form;

orgManager.delOrg(oaf.getId());

// 异常方法二
//
// try {
// 手功异常
// orgManager.delOrg(oaf.getId());
// } catch (Exception e) {
// ActionMessages msgs = new ActionMessages();
//
// ActionMessage msg = new ActionMessage("errors.detail",
// e.getMessage());
//
// msgs.add("detail", msg);
//
// this.saveErrors(request, msgs);
//
// return mapping.findForward("exception");
// }

return mapping.findForward("pub_del_success");
}

public void setOrgManager(OrgManager orgManager) {
this.orgManager = orgManager;
}

}

package com.gudong.oa.web.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.guandong.oa.manager.PersonManager;
import com.guandong.oa.model.Person;
import com.gudong.oa.web.forms.PersonActionForm;

public class PersonAction extends DispatchAction {

private PersonManager personManager;

protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

request.setAttribute("pm", personManager.searchPersons());

return mapping.findForward("index");
}

// 打开添加页面
public ActionForward addInput(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

return mapping.findForward("add_Input");
}

//添加人员
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

PersonActionForm paf = (PersonActionForm)form;

Person person = new Person();

BeanUtils.copyProperties(person, paf);

personManager.addPerson(person,paf.getOrgId());

return mapping.findForward("pub_add_success");
}

//删除人员
public ActionForward del(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

PersonActionForm paf = (PersonActionForm)form;

personManager.delPerson(paf.getId());

return mapping.findForward("pub_del_success");
}

public void setPersonManager(PersonManager personManager) {
this.personManager = personManager;
}

}
lhack 2008-08-22
  • 打赏
  • 举报
回复
package com.guandong.oa.manager.impl;

import com.guandong.oa.PagerModel;
import com.guandong.oa.SystemException;
import com.guandong.oa.manager.OrgManager;
import com.guandong.oa.model.Orgnization;


public class OrgManagerImpl extends AbstractManager implements OrgManager {

public void addOrg(Orgnization org, int parentId) {
if (parentId != 0) {
org.setParent((Orgnization) getHibernateTemplate().load(
Orgnization.class, parentId));
}
getHibernateTemplate().save(org);
org.setSn(org.getParent() == null ? ("" + org.getId()) : (org
.getParent().getSn()
+ "_" + org.getId()));
getHibernateTemplate().update(org);
}

public void delOrg(int orgId) {
Orgnization org = (Orgnization) getHibernateTemplate().load(
Orgnization.class, orgId);
if (org.getChildren().size() > 0) {
throw new SystemException("存在子机构不能删除!", "exception.org.del", org
.getId());
}
getHibernateTemplate().delete(org);

}

public Orgnization findOrg(int orgId) {
return (Orgnization) getHibernateTemplate().load(Orgnization.class,
orgId);
}

public void update(Orgnization org, int parentId) {
if (parentId != 0) {
org.setParent((Orgnization) getHibernateTemplate().load(
Orgnization.class, parentId));
}
getHibernateTemplate().update(org);
}

public PagerModel findOrgs(int parentId) {
/*String selectCountHql = "select count(*) from Orgnization o where o.parent.id is null";

if (parentid != 0) {
selectCountHql = "select count(*) from Orgnization o where o.parent.id ="
+ parentid;
}

// 获取总记录数
int total = ((Long) getSession().createQuery(selectCountHql)
.uniqueResult()).intValue();

String selectHql = "select o from Orgnization o where o.parent.id is null";

if (parentid != 0) {
selectHql = "select o from Orgnization o where o.parent.id ="
+ parentid;
}

//获取当前页的数据
List datas = getSession().createQuery(selectHql)
.setFirstResult(offset)
.setMaxResults(pagesize)
.list();
PagerModel pm = new PagerModel();

pm.setTotal(total);

pm.setDatas(datas);

return pm;*/

if(parentId==0){
return serachPaginated("from Orgnization o where o.parent.id is null");
}
return serachPaginated("from Orgnization o where o.parent.id = ?",parentId);
}

}
web.xml:<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<!-- Standard Action Servlet Configuration (with debugging) -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
<filter-name>Spring character encoding filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Spring character encoding filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
<filter-name>pagerFilter</filter-name>
<filter-class>com.gudong.oa.web.PagerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>pagerFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>
lhack 2008-08-22
  • 打赏
  • 举报
回复
对不起这两天去面试了,没上线,我现在把代码贴出来,可能有点多因为不知道那出错了
package com.guandong.oa.manager.impl;

import com.guandong.oa.PagerModel;
import com.guandong.oa.SystemException;
import com.guandong.oa.manager.PersonManager;
import com.guandong.oa.model.Orgnization;
import com.guandong.oa.model.Person;

public class PersonManagerImpl extends AbstractManager implements PersonManager {

public void addPerson(Person person, int orgId) {
if(orgId == 0){
throw new SystemException("机构不允许为空!");
}
person.setOrg(
(Orgnization)getHibernateTemplate().load(Person.class,orgId)
);

getHibernateTemplate().save(person);
}

public void delPerson(int personId) {
getHibernateTemplate().delete(
getHibernateTemplate().load(Person.class, personId)
);
}

public Person findPerson(int personId) {

return (Person)getHibernateTemplate().load(Person.class, personId);
}

public PagerModel searchPersons() {

return serachPaginated("from Person");
}

public PagerModel searchPersons(int orgId) {

return serachPaginated("select p from Person p where p.org.id = "+orgId);
}

}
youjianbo_han_87 2008-08-20
  • 打赏
  • 举报
回复
java.lang.ClassCastException: com.guandong.oa.model.Person$$EnhancerByCGLIB$$d70c6a32
看上去是对象转换异常,楼主把从DAO里面取出来的数据放到List或者取出的时候的那段代码贴出来,否则怎么看?
zhj92lxs 2008-08-19
  • 打赏
  • 举报
回复
t com.guandong.oa.manager.impl.PersonManagerImpl.addPerson(PersonManagerImpl.java:16)
看看这行
ClassCastException是类型转换出了问题
harryzyp 2008-08-19
  • 打赏
  • 举报
回复
ClassCastException这个异常一般是强制类型转换错误,不能强制转的时候你转了
软白沙 2008-08-19
  • 打赏
  • 举报
回复
你一步一步跟着视频再走一遍
lhack 2008-08-19
  • 打赏
  • 举报
回复
我是看视频做的,因为是菜鸟看不出来,用他代码可以,用我的代码就这个错误,感觉是编码格式过滤时出错
lhack 2008-08-19
  • 打赏
  • 举报
回复
我看不出那错,我是和视频做的,代码用他的就可能,用我的就用这错误,觉的是编码格式过滤时没做好
lhack 2008-08-19
  • 打赏
  • 举报
回复
ant自动生成的
chenkangwan 2008-08-19
  • 打赏
  • 举报
回复
如果你的com.guandong.oa.model.Person是用ejb3写的或hibernate 3.0 使用复合主键。就一定要实现serializable接口。否则就会出现:java.lang.ClassCastException错误~
zhkchi 2008-08-19
  • 打赏
  • 举报
回复
你这个好像是cglib自动生成的吧
lhack 2008-08-19
  • 打赏
  • 举报
回复
有啊
china25qd 2008-08-19
  • 打赏
  • 举报
回复
你的包呢?
没放工程里?
zergwangcn 2008-08-19
  • 打赏
  • 举报
回复
把com.guandong.oa.manager.impl.PersonManagerImpl.java这个程序放上来看看撒。
sunzhyng 2008-08-19
  • 打赏
  • 举报
回复
类型转换异常

67,512

社区成员

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

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