当前位置:编程学习 > JAVA >>

Servlet如何向客户端传递对象时出错,那位高手帮忙解决???

服务器向客户端传递对象时抛出异常:

java.lang.ClassNotFoundException: TestSession.Person
  at java.net.URLClassLoader$1.run(Unknown Source)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
  at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
  at java.lang.ClassLoader.loadClassInternal(Unknown Source)
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Unknown Source)
  at java.io.ObjectInputStream.resolveClass(Unknown Source)
  at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
  at java.io.ObjectInputStream.readClassDesc(Unknown Source)
  at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
  at java.io.ObjectInputStream.readObject0(Unknown Source)
  at java.io.ObjectInputStream.readObject(Unknown Source)
  at Acount.Test.<init>(Test.java:21)
  at Acount.Test.main(Test.java:42)

服务器MyServlet为:
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

resp.setContentType("application/octet-stream");

ServletOutputStream out = resp.getOutputStream();

ObjectOutputStream outObj = new ObjectOutputStream(out);

Person person = new Person("ligo",23);

outObj.writeObject(person);

out.close();
outObj.close();


}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

doGet(req, resp);
}

}


客户端为:Test.java

import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.*;
public class Test {

private URL url = null ;
private URLConnection con = null;

Test(){

try {
url = new URL("http://localhost:8080/TestSession/MyServlet");
con = url.openConnection();

//con.setRequestProperty("Content-Type","application/octet-stream");
ObjectInputStream in = new ObjectInputStream(con.getInputStream());

Person person = null;

person = (Person)in.readObject();

in.close();

System.out.println(person.getName()+" "+person.getAge());




} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();
}

}

public static void main(String[] str){
new Test();
}

}


 当然在客户端与服务器端都存在类Person,并继承Serilizable


import java.io.Serializable;

public class Person implements Serializable{


private String name;
private int age;


Person(){}
Person(String name,int age){
this.name = name;
this.age = age;

}

public void setName(String name){
this.name = name;
}

public String getName(){

return name;
}

public void setAge(int age){
this.age = age;
}

public int getAge(){

return age;
}

}


请高手帮忙了。。。 --------------------编程问答-------------------- 找不到类异常…… --------------------编程问答-------------------- TestSession.Person
这个类找不到,还有包名你用要用小写。 --------------------编程问答-------------------- 看看类名称是否写错了,还是导项目中丢了包 --------------------编程问答-------------------- 我已经解决了,就是那个Persion 类,在服务器端与客户端包路径要一致,哈哈。。。没注意这个问题,谢谢大家了!
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,