我是UDP協議新手,我想從一個很好的例子中學習。我終於找到了一個好的example,但它給了java.lang.ClassNotFoundException: packagename.Student
異常UDP示例給出java.lang.ClassNotFoundException:packagename.Foo異常;怎麼修?
我先運行服務器然後客戶端。
的客戶端輸出:
消息從客戶
響應從服務器發送:謝謝你的留言□□□□□□□□□□□□□□□□□□□ □□
的□□□□大線以上
的服務器輸出:
拋出java.lang.ClassNotFoundException:ex_udp_client.Student在 java.net.URLClassLoader的$ 1.run(URLClassLoader.java:366)在 java.net.URLClassLoader的$ 1.run(URLClassLoader.java:355)在 java.security.AccessController.doPrivileged(本機方法)在在 java.lang.ClassLoader.loadClass(ClassLoader.java:423) java.net.URLClassLoader.findClass(URLClassLoader.java:354)在 sun.misc。啓動器$ AppClassLoader.loadClass(Launcher.java:308)at java.lang.ClassLoader.loadClass(ClassLoader.java:356)at java.lang.Class.forName0(Native Method)at java.lang.Class.for名稱(Class.java:266)在 java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:622)在 java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1593) 在 java.io.ObjectInputStream.readClassDesc (ObjectInputStream.java:1514) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750) 在java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 在java.io.ObjectInputStream.readObject( ObjectInputStream.java:369) 在 ex_udp_server.UDPSocketServer.createAndListenSocket(UDPSocketServer.java:40)在ex_udp_server.UDPSocketServer.main(UDPSocketServer.java:72)BUILD 成功(總時間:6秒)
我想在這行拋出的異常:
Student student = (Student) is.readObject();
如何解決?
複製到客戶端和服務器
import java.io.Serializable;
public class Student implements Serializable
{
public Student(int id, String name, String address1)
{
this.id = id;
this.name = name;
this.addressLine = address1;
}
private static final long serialVersionUID = 1L;
private int id;
private String name;
private String addressLine;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getAddressLine()
{
return addressLine;
}
public void setAddressLine(String addressLine)
{
this.addressLine = addressLine;
}
public String toString()
{
return "Id = " + getId() + " Name = " + getName() + " Address = " + getAddressLine();
}
}
Server類的兩個包的Serializable類
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDPSocketServer
{
DatagramSocket socket = null;
public UDPSocketServer()
{
}
public void createAndListenSocket()
{
try
{
socket = new DatagramSocket(9876);
byte[] incomingData = new byte[1024];
while (true)
{
DatagramPacket incomingPacket = new DatagramPacket(incomingData, incomingData.length);
socket.receive(incomingPacket);
byte[] data = incomingPacket.getData();
ByteArrayInputStream in = new ByteArrayInputStream(data);
ObjectInputStream is = new ObjectInputStream(in);
try
{
Student student = (Student) is.readObject();
System.out.println("Student object received = " + student);
} catch (ClassNotFoundException e)
{
e.printStackTrace();
}
InetAddress IPAddress = incomingPacket.getAddress();
int port = incomingPacket.getPort();
String reply = "Thank you for the message";
byte[] replyBytea = reply.getBytes();
DatagramPacket replyPacket =
new DatagramPacket(replyBytea, replyBytea.length, IPAddress, port);
socket.send(replyPacket);
Thread.sleep(2000);
System.exit(0);
}
} catch (SocketException e)
{
e.printStackTrace();
} catch (IOException i)
{
i.printStackTrace();
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
UDPSocketServer server = new UDPSocketServer();
server.createAndListenSocket();
}
}
Client類
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.*;
public class UDPSocketClient
{
DatagramSocket Socket;
public UDPSocketClient()
{
}
public void createAndListenSocket()
{
try
{
Socket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("localhost");
byte[] incomingData = new byte[1024];
Student student = new Student(1, "Bijoy", "Kerala");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(outputStream);
os.writeObject(student);
byte[] data = outputStream.toByteArray();
DatagramPacket sendPacket = new DatagramPacket(data, data.length, IPAddress, 9876);
Socket.send(sendPacket);
System.out.println("Message sent from client");
DatagramPacket incomingPacket = new DatagramPacket(incomingData, incomingData.length);
Socket.receive(incomingPacket);
String response = new String(incomingPacket.getData());
System.out.println("Response from server:" + response);
Thread.sleep(2000);
} catch (UnknownHostException e)
{
e.printStackTrace();
} catch (SocketException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
UDPSocketClient client = new UDPSocketClient();
client.createAndListenSocket();
}
}
何時/你在哪裏得到這個錯誤? – prmottajr
@prmottajr在服務器端;我先運行服務器,然後客戶端然後輸出兩者,服務器在那個時候拋出異常;查看更新的問題。 –