2013-04-22 10 views
6

Jedis에서 응답 객체를 사용하면 ClassCastException이 발생합니다. 파이프 라인을 사용할 때 Redis로부터 어떤 가치도 얻을 수 없습니다. 도와주세요. 제다이 2.1.0을 사용하고 있습니다.Jedis의 응답 객체 - ClassCastException을 throw합니다.

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 (Java 6 및 Mac OS X 7)에서 작동합니다. 또한 Redis에 이상한 값을 쓰려고했지만 "올바른"오류가 발생하고 확실히 ClassCastException이 아닙니다. 더 많은 정보를 공유 할 수 있습니다 (특히 버전, 플랫폼, 데이터 등). –

+0

당신이 옳습니다. 내가 사용한 항아리 파일에 충돌이있었습니다. 실수로 빌드 경로에서 jedis 2.1.0과 jedis 2.0.0을 모두 유지했습니다. 감사 – user1182253

답변

4

사용 된 jar 파일에 충돌이 있습니다. 실수로 빌드 경로에서 jedis 2.1.0과 jedis 2.0.0을 모두 유지했습니다.