发送arraylist

时间:2016-04-12 17:49:06

标签: java arraylist tcp-ip

我有客户端 - 服务器应用程序,我需要从服务器发送ArrayList到客户端,但在客户端启动后我在客户端中有错误:

Exception in thread "main" java.lang.ClassNotFoundException: servertest.Computer
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:626)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1613)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at java.util.ArrayList.readObject(ArrayList.java:791)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1900)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at clienttest.Clienttest.main(Clienttest.java:25)

在什么问题?

服务器代码:

package servertest;
import java.net.*;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.util.ArrayList;
public class Servertest {
public static void main(String[] args) throws IOException {
    ServerSocket serve = new ServerSocket(3128, 0,
                InetAddress.getByName("localhost"));
    Socket skt = serve.accept();  
 ObjectOutputStream out = new ObjectOutputStream(skt.getOutputStream());
 ArrayList<Computer> Arsend = new ArrayList<Computer>();
   Computer comp1 = new Computer();
    comp1.setProcessor("1.5 GHZ");
                comp1.setRam("512 MB");
                comp1.setHddSize("100 GB");

    Computer comp2 = new Computer();
    comp2.setProcessor("2.5 GHZ");
                comp2.setRam("512 MB");
                comp2.setHddSize("50 GB");

                Arsend.add(comp1);
                Arsend.add(comp2);
  out.writeObject(Arsend);
}}


package servertest;
import java.io.Serializable;
 public class Computer implements Serializable{
 private String Processor;
private String Ram;
private String HddSize;
private static final long serialVersionUID = 1L;
public String getProcessor() {
    return Processor;
}
public void setProcessor(String Processor) {
    this.Processor = Processor;
}
public String getRam() {
    return Ram;
}
public void setRam(String Ram) {
    this.Ram = Ram;
}
public String getHddSize() {
    return HddSize;
}
public void setHddSize(String HddSize) {
    this.HddSize = HddSize;
}}

客户代码:

public static void main(String[] args) throws IOException, ClassNotFoundException {
 Socket s = new Socket("localhost", 3128);
 ObjectInputStream in = new ObjectInputStream(s.getInputStream());
 ArrayList<Object> receivedList = (ArrayList<Object>)in.readObject();

当我启动客户端时,他无法找到课程,最后一个客户端的问题,可能是我应该在那里改变某些东西......,或者可能是课堂上的问题&#34;计算机&#34; ?? < / p>

1 个答案:

答案 0 :(得分:-1)

仅在maven使用Eclipse版本时建议。

我遇到了同样的问题。我所做的就是,

i)中。只需从项目文件夹中删除.project.classpath

ii)使用此命令生成Eclipse工件。

mvn clean eclipse:eclipse

ⅲ)。刷新项目并重建项目。它应该工作正常。