我是UDP协议的新手,我想学习一个很好的例子。我终于找到了一个很好的示例,但它给出了java.lang.ClassNotFoundException:packageName.student
异常
我首先运行服务器,然后运行客户端。
客户端输出:
来自客户端的消息
来自服务器的响应:谢谢您的消息-------------
上面的----大行
服务器输出:
java.lang.ClassNotFoundexception:ex_udp_client.student在java.net.urlClassLoader$1上运行(urlClassLoader.java:366)在java.net.urlClassLoader$1上运行(urlClassLoader.java:355)在java.security.accessController.doprivileged(本机方法)在java.net.urlClassLoader.findClass(本机方法)在java.net.urlClassLoader.java:354)在dp_server.udpsocketserver.createandlistensocket(udpsocketserver.java:40)在ex_udp_server.udpsocketserver.main(udpsocketserver.java:72)上生成成功(总时间: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类
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();
}
}
客户端类
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();
}
}
您是在服务器中还是在客户端中得到这个异常?
在这两个中的任何一个中,都意味着在运行时(在客户端或服务器中)没有
这个类。
我的意思是,类路径上没有它。
复制到客户端和服务器包的可序列化类
这就是问题所在。一个名为client.student
的类与server.student
不同,不管源代码怎么说。您需要在适当的目录中拥有该类的一个副本,并将.class文件部署到服务器和客户端。
我们的示例应用程序将打开一个文件,将每一行作为消息通过 UDP 发到指定的端口。如果你熟悉类 UNIX 操作系统,可以认为这是一个非常标准的简化版本 “syslog(系统日志)”。“UDP ,是一个完美的适合这样的应用程序,因为偶尔丢失一行日志文件可以被容忍,因为文件本身存储在文件系统中。此外,应用程序提供了非常有价值的能力有效地处理大量的数据。 UDP 广播使添加新事件“监视器”接收日志消息一样
问题内容: 我正在尝试将XML发送到服务器并取回XML。有什么办法可以解决/忽略此异常吗? 我知道状态行为空,这会引发此错误。 问题答案: 尝试看看您的服务器实际上返回了什么!它可能不是有效的HTTP响应。您可以使用以下方式将原始的http请求发送到服务器: 响应应类似于:
另一方面,如果我们这样写,就没有并发修改异常!注意,代码完全相同,除了用于比较的字符串,在第一个示例中是代码,在第二个示例中是Java 我使用的是Netbeans 8.2,Windows 7 32bit,JDK 1.8.0_131有什么问题吗?
在你可以捕获异常之前,一些代码必须抛出一个异常。任何代码都可能会抛出异常:您的代码,来自其他人编写的包(例如Java平台附带的包)或Java运行时环境的代码。无论是什么引发的异常,它总是通过 throw 语句抛出。 您可能已经注意到,Java平台提供了许多异常类。所有类都是Throwable类的后代,并且都允许程序区分在程序执行期间可能发生的各种类型的异常。 您还可以创建自己的异常类来表示在您编写
我正在尝试使用jena库为语义网编写java web爬虫程序。我已经使用Netbeans构建了一个项目。我收到两个错误: > 未能实例化SLF4J LoggerFactory报告的异常:java。lang.NoClassDefFoundError:org/apache/log4j/Level 无法初始化类com。惠普。hpl。耶拿。rdf。模型impl。modelorg。slf4j。伐木厂。绑定(