2

我正在使用 Java EWS API(EWS - Exchange Web 服务)从 Exchange 服务器获取电子邮件并将其存储在专有 CMS 中。我收到消息的类型是microsoft.exchange.webservices.data.EmailMessage- EWS API 提供的类。CMS API 需要ByteArrayOutputStream对象作为其方法的参数。

所以我想将EmailMessage对象转换为ByteArrayOutputStream. 我看到了这个线程并尝试了类似的方法:(下面item是类型EmailMessage

ByteArrayOutputStream b = new ByteArrayOutputStream();
try
{
    ObjectOutputStream o  = new ObjectOutputStream(b);
    o.writeObject((Object)item);
}
catch(IOException ioe)   
{
    ioe.printStackTrace(); 
}

但我越来越

java.io.NotSerializableException: microsoft.exchange.webservices.data.EmailMessage
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)   
     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)

我可以使用 格式保存这些EmailMessage对象,但是现在我无法找到将它们转换为. 那么有什么方法可以转换为或直接从to转换为..emlFileOutputStreamByteArrayOutputStreamFileOutputStreamByteArrayOutputStreamEmailMessageByteArrayOutputStream

4

1 回答 1

0

你得到这个异常是因为你(Object)item的类没有实现Serializable接口。来自 java doc writeObject(Object obj)

对于 OutputStream 的问题和不应序列化的类,将引发异常。所有异常对于 OutputStream 来说都是致命的,它处于不确定状态,由调用者来忽略或恢复流状态。

于 2013-10-31T11:06:43.107 回答