我有客户端 - 服务器应用程序,我需要从服务器发送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>
答案 0 :(得分:-1)
仅在maven
使用Eclipse
版本时建议。
我遇到了同样的问题。我所做的就是,
i)中。只需从项目文件夹中删除.project
和.classpath
。
ii)使用此命令生成Eclipse工件。
mvn clean eclipse:eclipse
ⅲ)。刷新项目并重建项目。它应该工作正常。