2013-04-22 106 views
6

在Jedis中使用Response對象,拋出ClassCastException。當我使用管道時,我無法從Redis獲得任何價值。請幫忙。我正在使用Jedis 2.1.0Jedis中的響應對象 - 拋出ClassCastException

public class JedisPipeline {  
    public static void main(String args[]){ 
     final JedisPool pool = new JedisPool(new JedisPoolConfig(), "127.0.0.1", 6379); 
     Jedis jedis = pool.getResource(); 
     Pipeline pipeline = jedis.pipelined(); 
     pipeline.multi(); 
     HashMap<String,String> map = new HashMap<String,String>(); 
     map.put("50", "50"); 
     pipeline.hmset("Id",map); 
     Response <Long> incr = pipeline.hincrBy("Id", "100", 100); 
     Response<Map<String,String>> map1 = pipeline.hgetAll("Id"); 
     pipeline.exec(); 
     List<Object> results = pipeline.syncAndReturnAll(); 
     System.out.println(results); 
     System.out.println(incr.get()); 
     System.out.println(map1.get()); 
     pool.returnResource(jedis); 
     pool.destroy(); 
    } 
} 

Exception in thread "main" java.lang.ClassCastException: [B cannot be cast to java.lang.Long 
    at redis.clients.jedis.BuilderFactory$4.build(BuilderFactory.java:45) 
    at redis.clients.jedis.BuilderFactory$4.build(BuilderFactory.java:48) 
    at redis.clients.jedis.Response.get(Response.java:27) 
    at redis.clients.jedis.Pipeline.syncAndReturnAll(Pipeline.java:42) 
    at com.work.jedis.JedisPipeline.main(JedisPipeline.java:28) 
+0

適用於Jedis 2.1.0和Redis 2.4.14,適用於Mac OS X上的Java 6和7。我也嘗試在Redis中寫入奇怪的值,但得到「正確」錯誤,當然不是ClassCastException。您可以分享的更多細節(特別是版本,平臺,數據等)? – 2013-04-30 08:00:13

+0

你說得對。我使用的jar文件存在衝突。在構建路徑中我錯誤地保留了jedis 2.1.0和jedis 2.0.0。謝謝 – user1182253 2013-04-30 14:38:30

回答

4

我使用的jar文件存在衝突。在構建路徑中我錯誤地保留了jedis 2.1.0和jedis 2.0.0。

相關問題