java.io.IOException:不支持对象类型

时间:2014-10-31 11:07:29

标签: codenameone

当我尝试保存用户上传的图像时,我收到以下错误。

java.io.IOException: Object type not supported: com.codename1.ui.Image value: com.codename1.ui.Image@76a29a7
at com.codename1.io.Util.writeObject(Util.java:406)

以下是我的计划。

用户类

public class User implements Externalizable {
        private String name;
        private Image proImg;

        public void externalize(DataOutputStream out) throws IOException {
            Util.writeUTF(getName(), out);
            Util.writeObject(getProImg(), out);

        }
        public void internalize(int version, DataInputStream in) throws IOException {
            setName(Util.readUTF(in));
            setProImg((Image) Util.readObject(in));
        }
       ...

}

StateMachine类

 protected void onCreateAccountGui_SaveBtnAction(Component c, ActionEvent event) {
    User usr =  new User();     
    usr.setName(findNametxta(c).getText());
    usr.setProImg(findProImgGallery(c).getImage());

    try
    {
        storedUser.writeObject("userStore", usr);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:1)

Image不是Externalizable类,因为它包含特定于平台的本机图像数据而非字节。

EncodedImageExternalizable,所以你应该使用它。默认情况下,我们创建的所有图片(例如资源)均为EncodedImage,但如果您拥有Image或可变图片,则可以使用以下代码将其转换为EncodedImage

EncodedImage enc = EncodedImage.createFromImage(img, jpgOrPng);