Jedis(Java->Redisのライブラリ)の簡単なテストでハマった


あるときJavaからRedisにつなぐ簡単なプログラムを書きたくなり、tutorialspoint
https://www.tutorialspoint.com/redis/redis_java.htm
を見てそのとおりやってみたらハマったので備忘録。

紹介されているとおり、リポジトリからJedisのjarをダウンロードしてきてclasspathに通して、Javaのサンプルアプリを書いてJedisをインポートしてRedisにつなぐ、という流れは変わらないのだが、jedis.jarのDLはここから、というリンクから入手したjedis-2.1.0-sources.jarを利用すると、Jedisクラスを利用したときに以下のエラーがでる

Exception in thread "main" java.lang.NoClassDefFoundError: redis/clients/jedis/Jedis
        at RedisJava.main(RedisJava.java:6)
Caused by: java.lang.ClassNotFoundException: redis.clients.jedis.Jedis
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 1 more

クラス自体が間違ってる?と思ったらそうだった(詳しいことは不明)
ダウンロードURLのパスをさかのぼっていくと
http://repo1.maven.org/maven2/redis/clients/jedis/
もっと新しいバージョンのjedis.jarをDLできるので、試しに3.0.0を使ってみたら正常に実行できた(javaのサンプルアプリからRedisにつながった)
DLしたのはこれ http://repo1.maven.org/maven2/redis/clients/jedis/3.0.0/jedis-3.0.0.jar

Connection to server sucessfully
Server is running: PONG
}}}