将对象转换为不同机器上的字符串时出现异常

时间:2015-07-09 02:50:22

标签: java exception casting objectinputstream

当尝试从一个Object(应该是一个序列化的字符串)转换为String时,在一台机器上它可以正常工作,但在另一台机器上它会产生异常。

Prefix      Break
.col-xs-    auto
.col-sm-    ~372px/col-6 (750px for container)
.col-md-    ~486px/col-6 (970px for container)
.col-lg-    ~582px/col-6 (1170px for container)

两台机器运行相同版本的Ubuntu(14.04 LTS)和相同版本的Java(1.7.0_51)。 代码如下,

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String

对象输入流在套接字上成功运行,整个程序在其他机器上运行良好(即使使用不同版本的linux和Java)。监视TCP流量表示正在正确发送字符串。什么可能导致这种情况发生,有没有办法使这项工作普遍存在?

谢谢。

1 个答案:

答案 0 :(得分:0)

虽然我不知道为什么相同的代码会在两个所谓的类似配置的机器上执行不同的操作,但我建议将代码更改为读取对象,然后只有在知道它是一个字符串时才将其转换为字符串。如果它不是......并且你没有想到,那么你可以记录它,抛出异常或做一些有用的事情。

所以也许像是;

while(true)
{
    object obj = ois.readObject(); 
    if (obj instanceof String)
    {
        data = (String) obj;
        System.out.println(data);
    }
    else 
    {
        // Do whatever makes sense here for you
        // If you are testing, then maybe dump whatever info you
        // can to a log file to help you understand what you are reading
        // from the socket and how you could handle that gracefully in 
        // a production environment.
    }
}