我正在尝试通过网络套接字发送自定义的serializable
对象,并在另一侧反序列化。以下是我要发送的类的定义:
public class Test implements implements Runnable, Serializable{
public void run() {
System.out.println("Hello!");
}
}
我想在另一端重建这个类,而无需通过将其转换为bytecode
来访问类Runnable
。不幸的是,它给了我ClassNotFoundException
例外。是否有任何解决方法可以在不访问类bytecode
的情况下反序列化对象?
答案 0 :(得分:3)
不是真的。但是,您可以通过http服务器提供jar,然后运行客户端,并将java.rmi.server.codebase系统属性设置为RMI将加载类的URL列表。
答案 1 :(得分:1)
你问的事是不可能的。
Java Serialization api发送对象内的数据字段和一些内务处理信息。数据字段以紧凑的形式发送。在接收方的侧面,使用这些数据字段值构造对象。
将其视为正常创建对象并构造函数初始化字段。这里Java Serialization正在完成构造函数的工作,但是你仍然需要包含方法等字节码的类定义。
答案 2 :(得分:0)
您可以从ClassNotFound异常中的消息中获取类名。我希望有一个更好的方法从反序列化的类中获取类名,而不需要加载类。