"Checker"가 클래스 인 두 개의 다른 패키지 "mas.back.task.Checker"와 "mas.front.task.Checker"가 있는데, 클래스를 전송했습니다. bytebuffer의 serialization을 사용하여 클라이언트 소켓에서 서버 소켓으로 성공적으로 직렬화되었지만 "mas.front.task.Checker"에서 "mas.back.task.Checker"로 변환 할 때 작동하지 않으며 여기에 오류 메시지가 표시됩니다.자바 객체를 다른 패키지 소스에서 캐스팅 할 수 없습니다.
Exception in thread "pool-1-thread-2" java.lang.ClassCastException: mas.front.task.Checker cannot be cast to mas.back.task.Checker
여기에 서버 소켓에 클라이언트 소켓을 통해 클래스를 보내는 코드 :
public static final Object convertByteToObject(byte[] bytes) {
ObjectInput in;
try {
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
in = new ObjectInputStream(bis);
return in.readObject();
} catch (IOException | ClassNotFoundException ex) {
Logger.getLogger(Converter.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
public static final byte[] convertObjectToByte(Object object) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(object);
return bos.toByteArray();
} catch (IOException ex) {
Logger.getLogger(Converter.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
Checker 클래스의 모든 필드가 동일하고 "Checker checker = new Checker()"를 시도했지만 "checker = (Checker) object"일 때 오류가 위의 메시지로 표시되므로 어떻게 해결할 수 있습니까? 이 문제?
비고 :
public class Checker implements Serializable {
public String JobID;
public String JobUserID;
public int JobInterval;
public String JobStatus;
}
이유는 TCP/IP 소켓을 통해 직렬화 또는 직렬화 해제를 통해 클래스를 전송하는 것이므로 프론트 엔드 클라이언트는 mas.front.task.XXX이고 백엔드는 클래스에 대해 mas.back.task.XXX입니다. 위의 제안이 있습니까? –
두 번째 이유는 Checker 유형뿐만 아니라 다른 유형의 Checker 유형도 전송해야합니다. –
Checker 클래스를 작성 했습니까? –