2

Java EWS API (EWS - Exchange Web Services) を使用して Exchange サーバーから電子メールを取得し、独自の CMS に保存しています。メッセージを取得するタイプはmicrosoft.exchange.webservices.data.EmailMessage、EWS API によって提供されるクラスです。CMS API ではByteArrayOutputStream、メソッドへのパラメータとして object が必要です。

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を使用してこれらのオブジェクトを.eml形式で保存できますがFileOutputStream、現在、それらを に変換する方法を見つけることができませんByteArrayOutputStream。に変換する方法、または からに直接変換FileOutputStreamする方法はありますか。ByteArrayOutputStreamEmailMessageByteArrayOutputStream

4

1 に答える 1

0

(Object)itemのクラスがインターフェイスを実装していないため、この例外が発生していSerializableます。Java doc writeObject(Object obj)から

OutputStream に問題がある場合、およびシリアル化してはならないクラスについては、例外がスローされます。すべての例外は、不確定な状態のままである OutputStream にとって致命的であり、ストリームの状態を無視するか回復するかは呼び出し元次第です。

于 2013-10-31T11:06:43.107 に答える