at net.spy.memcached.transcoders.BaseSerializingTranscoder.serialize

解决办法:

Memcache doesn't know how to serialize your objects. You'll need to implement Serializable to have Java handle the serialization, or Externalizable if you need more control over the (de)serialization process.

public class User implements Serializable


Hi everyone i was working with memcache, and when i compiled this code i got following errors.

2010-07-09 10:35:53.499 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2010-07-09 10:35:53.520 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@7fdcde
Exception in thread "main" java.lang.IllegalArgumentException: Non-serializable object
 at net.spy.memcached.transcoders.BaseSerializingTranscoder.serialize(BaseSerializingTranscoder.java:86)
 at net.spy.memcached.transcoders.SerializingTranscoder.encode(SerializingTranscoder.java:135)
 at net.spy.memcached.MemcachedClient.asyncStore(MemcachedClient.java:301)
 at net.spy.memcached.MemcachedClient.set(MemcachedClient.java:691)
 at def.Tweet.main(Tweet.java:23)
Caused by: java.io.NotSerializableException: def.User
 at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1173)
 at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:343)
 at net.spy.memcached.transcoders.BaseSerializingTranscoder.serialize(BaseSerializingTranscoder.java:81)
 ... 4 more

I managed to fix it with converting User class toString but ı dont want to use toString method.I just want to use my class to add and get mwethods. How can i fix this problem? Here is the code i am using.

package def;

import java.io.IOException;
import java.io.Serializable;
import java.net.InetSocketAddress;

import net.spy.memcached.MemcachedClient;

public class Tweet {
  private static User user;
  private static Message message;
  private static Followers follower;

public static void main(String[] args) throws Exception {
 try{
     user = new User(1,"Mehmet Özer","asd","127.0.0.1","True","Onine");
  //String deneme = user.toString();
  MemcachedClient c=new MemcachedClient(new InetSocketAddress("localhost", 11211));


  // Store a value (async) for one hour

  c.set(user.userKey, 3600, user);
  System.out.println(c.get(user.userKey));

    }
  catch(IOException ex) {
        ex.printStackTrace();
    }
}
}

Sorry , i forgot the User class, I am also giving you the User class to help me better.

public class User {
    public static String userKey = "UserDB";
    public static int userID ;
    public static String userName;
    public static String password;
    public static String ipAddress;
    public static String isOnline;
    public static String lastActive;

    public User(int userID, String userName, String password, String ipAddress,String isOnline,String lastActive)
    {
        this.userID = userID;
        this.userName = userName;
        this.password = password;
        this.ipAddress = ipAddress;
        this.isOnline = isOnline;
        this.lastActive = lastActive;

    }
    @Override
    public String toString() {
        System.out.println(this.userID);
        System.out.println(this.userName);
        System.out.println(this.password);
        System.out.println(this.ipAddress);
        System.out.println(this.isOnline);
        System.out.println(this.lastActive);

        return super.toString();
    }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值