New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Snappy-java fails on Mac OS JDK 1.7 #5

Closed
rplevy-draker opened this Issue Jun 19, 2012 · 10 comments

Comments

Projects
None yet
6 participants
@rplevy-draker

rplevy-draker commented Jun 19, 2012

This may be a case of just needing to add instructions, but I have found that while it works in my preferred development environment of Ubuntu with Java 7, it does not work in the equivalent Mac OS environment. I have so far not traced the source of the problem, other than snappy-java (presumably the native lib that the snappy-java JNI interface uses) not being on the class path. Is there something that needs to be installed?

Here is the stack trace:

java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.xerial.snappy.SnappyLoader.loadNativeLibrary(SnappyLoader.java:317)
        at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:219)
        at org.xerial.snappy.Snappy.<clinit>(Snappy.java:44)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:186)
        at carmine.serialization$eval1106$loading__4784__auto____1107.invoke(serialization.clj:1)
        at carmine.serialization$eval1106.invoke(serialization.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5302)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:421)
        at carmine.protocol$eval1087$loading__4784__auto____1088.invoke(protocol.clj:1)
        at carmine.protocol$eval1087.invoke(protocol.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5302)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at carmine.core$eval1081$loading__4784__auto____1082.invoke(core.clj:1)
        at carmine.core$eval1081.invoke(core.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5298)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:436)
        at foo.redis.impl$eval1075$loading__4784__auto____1076.invoke(impl.clj:1)
        at foo.redis.impl$eval1075.invoke(impl.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5298)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:457)
        at testapp.redis$eval1069$loading__4784__auto____1070.invoke(redis.clj:1)
        at testapp.redis$eval1069.invoke(redis.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5298)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:930)
        at foo.core$eval112$loading__4784__auto____113.invoke(core.clj:1)
        at foo.core$eval112.invoke(core.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5298)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:512)
        at foo.demo$eval89$loading__4784__auto____90.invoke(demo.clj:1)
        at foo.demo$eval89.invoke(demo.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5298)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at user$eval49$fn__70.doInvoke(NO_SOURCE_FILE:1)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:601)
        at user$eval49.invoke(NO_SOURCE_FILE:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.eval(Compiler.java:6477)
        at clojure.core$eval.invoke(core.clj:2797)
        at clojure.main$eval_opt.invoke(main.clj:297)
        at clojure.main$initialize.invoke(main.clj:316)
        at clojure.main$null_opt.invoke(main.clj:349)
        at clojure.main$main.doInvoke(main.clj:427)
        at clojure.lang.RestFn.invoke(RestFn.java:421)
        at clojure.lang.Var.invoke(Var.java:419)
        at clojure.lang.AFn.applyToHelper(AFn.java:163)
        at clojure.lang.Var.applyTo(Var.java:532)
        at clojure.main.main(main.java:37)
Caused by: java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
        at java.lang.Runtime.loadLibrary0(Runtime.java:845)
        at java.lang.System.loadLibrary(System.java:1084)
        at org.xerial.snappy.SnappyNativeLoader.loadLibrary(SnappyNativeLoader.java:52)
        ... 173 more
Exception in thread "main" org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] null
        at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:229)
        at org.xerial.snappy.Snappy.<clinit>(Snappy.java:44)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:186)
        at carmine.serialization$eval1106$loading__4784__auto____1107.invoke(serialization.clj:1)
        at carmine.serialization$eval1106.invoke(serialization.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5302)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:421)
        at carmine.protocol$eval1087$loading__4784__auto____1088.invoke(protocol.clj:1)
        at carmine.protocol$eval1087.invoke(protocol.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5302)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at carmine.core$eval1081$loading__4784__auto____1082.invoke(core.clj:1)
        at carmine.core$eval1081.invoke(core.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5298)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:436)
        at foo.redis.impl$eval1075$loading__4784__auto____1076.invoke(impl.clj:1)
        at foo.redis.impl$eval1075.invoke(impl.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5298)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:457)
        at foo.redis$eval1069$loading__4784__auto____1070.invoke(redis.clj:1)
        at foo.redis$eval1069.invoke(redis.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5298)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:930)
        at foo.core$eval112$loading__4784__auto____113.invoke(core.clj:1)
        at foo.core$eval112.invoke(core.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5298)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:512)
        at foo.demo$eval89$loading__4784__auto____90.invoke(demo.clj:1)
        at foo.demo$eval89.invoke(demo.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.load(Compiler.java:6952)
        at clojure.lang.RT.loadResourceScript(RT.java:359)
        at clojure.lang.RT.loadResourceScript(RT.java:350)
        at clojure.lang.RT.load(RT.java:429)
        at clojure.lang.RT.load(RT.java:400)
        at clojure.core$load$fn__4890.invoke(core.clj:5415)
        at clojure.core$load.doInvoke(core.clj:5414)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.core$load_one.invoke(core.clj:5227)
        at clojure.core$load_lib.doInvoke(core.clj:5264)
        at clojure.lang.RestFn.applyTo(RestFn.java:142)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$load_libs.doInvoke(core.clj:5298)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:603)
        at clojure.core$require.doInvoke(core.clj:5381)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at user$eval49$fn__70.doInvoke(NO_SOURCE_FILE:1)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invoke(core.clj:601)
        at user$eval49.invoke(NO_SOURCE_FILE:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.eval(Compiler.java:6477)
        at clojure.core$eval.invoke(core.clj:2797)
        at clojure.main$eval_opt.invoke(main.clj:297)
        at clojure.main$initialize.invoke(main.clj:316)
        at clojure.main$null_opt.invoke(main.clj:349)
        at clojure.main$main.doInvoke(main.clj:427)
        at clojure.lang.RestFn.invoke(RestFn.java:421)
        at clojure.lang.Var.invoke(Var.java:419)
        at clojure.lang.AFn.applyToHelper(AFn.java:163)
        at clojure.lang.Var.applyTo(Var.java:532)
        at clojure.main.main(main.java:37)
@ptaoussanis

This comment has been minimized.

Show comment
Hide comment
@ptaoussanis

ptaoussanis Jun 20, 2012

Owner

Hi Rob,

Thanks for bringing this forward!

Okay - it turns out this is a path bug with Snappy 1.0.4.1 affecting Java 7 on OSX: http://code.google.com/p/snappy-java/issues/detail?id=39

Snappy is generally well supported; this is an unusual issue because of a naming-convention change in JDK7. Since it's a simple bug to fix, and since Snappy is so widely used - I'm hoping they'll get around to fixing it soon. EDIT: I see they've already marked it for inclusion in 1.0.5.

In the meantime, you should be able to manually extract the relevant JNI from your snappy-java-1.0.4.1.jar and put it in your project's root path. Alternatively you could fiddle with the path options described here: http://code.google.com/p/snappy-java/source/browse/src/main/java/org/xerial/snappy/SnappyLoader.java?name=snappy-java-1.0.3-rc4&r=d05ec05c669617273bde3ff34ae995e070b5844a&spec=svn25d8cadcff5ab995564a240431f7ab6933534722 although that seems like more effort and I didn't try it myself. (I did successfully try the extraction running OSX+JDK7).

I'll also look into alternatives ASAP though unfortunately last time I checked, the non-JNI Snappy ports weren't nearly as mature - so I'm hesitant to move in that direction unnecessarily.

At the very least, I'll make sure to document this so it doesn't bite anyone else!

Cheers!

Owner

ptaoussanis commented Jun 20, 2012

Hi Rob,

Thanks for bringing this forward!

Okay - it turns out this is a path bug with Snappy 1.0.4.1 affecting Java 7 on OSX: http://code.google.com/p/snappy-java/issues/detail?id=39

Snappy is generally well supported; this is an unusual issue because of a naming-convention change in JDK7. Since it's a simple bug to fix, and since Snappy is so widely used - I'm hoping they'll get around to fixing it soon. EDIT: I see they've already marked it for inclusion in 1.0.5.

In the meantime, you should be able to manually extract the relevant JNI from your snappy-java-1.0.4.1.jar and put it in your project's root path. Alternatively you could fiddle with the path options described here: http://code.google.com/p/snappy-java/source/browse/src/main/java/org/xerial/snappy/SnappyLoader.java?name=snappy-java-1.0.3-rc4&r=d05ec05c669617273bde3ff34ae995e070b5844a&spec=svn25d8cadcff5ab995564a240431f7ab6933534722 although that seems like more effort and I didn't try it myself. (I did successfully try the extraction running OSX+JDK7).

I'll also look into alternatives ASAP though unfortunately last time I checked, the non-JNI Snappy ports weren't nearly as mature - so I'm hesitant to move in that direction unnecessarily.

At the very least, I'll make sure to document this so it doesn't bite anyone else!

Cheers!

@ghost ghost assigned ptaoussanis Jun 20, 2012

@ptaoussanis

This comment has been minimized.

Show comment
Hide comment
@ptaoussanis

ptaoussanis Jun 20, 2012

Owner

Just wanted to summarize for others needing this workaround:

  1. If you don't already have it, get the Snappy jar file from http://code.google.com/p/snappy-java/downloads/list
  2. Extract the jar somewhere (it's just a zip file).
  3. In org/xerial/snappy/native/Mac/ you'll find i386 (32bit) and x86_64 (64bit) .jnilib files. Copy the appropriate one to your project's root path (where your project.clj is).

And you should be good to go!

Owner

ptaoussanis commented Jun 20, 2012

Just wanted to summarize for others needing this workaround:

  1. If you don't already have it, get the Snappy jar file from http://code.google.com/p/snappy-java/downloads/list
  2. Extract the jar somewhere (it's just a zip file).
  3. In org/xerial/snappy/native/Mac/ you'll find i386 (32bit) and x86_64 (64bit) .jnilib files. Copy the appropriate one to your project's root path (where your project.clj is).

And you should be good to go!

@rplevy-draker

This comment has been minimized.

Show comment
Hide comment
@rplevy-draker

rplevy-draker Jun 20, 2012

Thank you very much for tracking this down! :)
On Jun 20, 2012 7:08 AM, "Peter Taoussanis" <
reply@reply.github.com>
wrote:

Just wanted to clarify steps for those needing this workaround:

  1. If you don't already have it, get the Snappy jar file from
    http://code.google.com/p/snappy-java/downloads/list
  2. Extract the jar file somewhere (a jar is just a zip file).
  3. In org/xerial/snappy/native/Mac/ you'll find i386 (32bit) and x86_64
    (64bit) .jnilib files. Copy the appropriate one to your project's root path
    (where your project.clj is).

Reply to this email directly or view it on GitHub:
#5 (comment)

rplevy-draker commented Jun 20, 2012

Thank you very much for tracking this down! :)
On Jun 20, 2012 7:08 AM, "Peter Taoussanis" <
reply@reply.github.com>
wrote:

Just wanted to clarify steps for those needing this workaround:

  1. If you don't already have it, get the Snappy jar file from
    http://code.google.com/p/snappy-java/downloads/list
  2. Extract the jar file somewhere (a jar is just a zip file).
  3. In org/xerial/snappy/native/Mac/ you'll find i386 (32bit) and x86_64
    (64bit) .jnilib files. Copy the appropriate one to your project's root path
    (where your project.clj is).

Reply to this email directly or view it on GitHub:
#5 (comment)

@andrewswan

This comment has been minimized.

Show comment
Hide comment
@andrewswan

andrewswan Jul 9, 2012

Found this ticket while Googling, and it fixed my problem with Cassandra 1.x on OSX, so thanks! For the record, I had to put the jnilib file into Cassandra's root directory (i.e. $CASSANDRA_HOME), not the lib folder.

andrewswan commented Jul 9, 2012

Found this ticket while Googling, and it fixed my problem with Cassandra 1.x on OSX, so thanks! For the record, I had to put the jnilib file into Cassandra's root directory (i.e. $CASSANDRA_HOME), not the lib folder.

@ptaoussanis

This comment has been minimized.

Show comment
Hide comment
@ptaoussanis

ptaoussanis Jul 9, 2012

Owner

Heh heh- no problem: glad it was helpful :)


Sent from my mobile

On 09 Jul 2012, at 9:05, Andrew Swanreply@reply.github.com wrote:

Found this ticket while Googling, and it fixed my problem with Cassandra 1.x on OSX, so thanks! For the record, I had to put the jnilib file into Cassandra's root directory (i.e. $CASSANDRA_HOME), not the lib folder.


Reply to this email directly or view it on GitHub:
#5 (comment)

Owner

ptaoussanis commented Jul 9, 2012

Heh heh- no problem: glad it was helpful :)


Sent from my mobile

On 09 Jul 2012, at 9:05, Andrew Swanreply@reply.github.com wrote:

Found this ticket while Googling, and it fixed my problem with Cassandra 1.x on OSX, so thanks! For the record, I had to put the jnilib file into Cassandra's root directory (i.e. $CASSANDRA_HOME), not the lib folder.


Reply to this email directly or view it on GitHub:
#5 (comment)

@michaelklishin

This comment has been minimized.

Show comment
Hide comment
@michaelklishin

michaelklishin Sep 7, 2012

Contributor

The root cause should be fixed now, waiting for a point release of Snappy Java.

Contributor

michaelklishin commented Sep 7, 2012

The root cause should be fixed now, waiting for a point release of Snappy Java.

@ptaoussanis

This comment has been minimized.

Show comment
Hide comment
@ptaoussanis

ptaoussanis Sep 7, 2012

Owner

Thanks, that's great. Will update Nippy soon as they release 1.0.5.

Owner

ptaoussanis commented Sep 7, 2012

Thanks, that's great. Will update Nippy soon as they release 1.0.5.

@ptaoussanis ptaoussanis closed this Sep 7, 2012

@ptaoussanis

This comment has been minimized.

Show comment
Hide comment
@ptaoussanis

ptaoussanis Sep 11, 2012

Owner

Okay, this is now resolved.

Owner

ptaoussanis commented Sep 11, 2012

Okay, this is now resolved.

@jhua

This comment has been minimized.

Show comment
Hide comment
@jhua

jhua Jan 16, 2013

snappy-java-1.0.5-M2.jar works, just replace the older version under cassandra lib.
http://code.google.com/p/snappy-java/downloads/detail?name=snappy-java-1.0.5-M2.jar&can=2&q=

jhua commented Jan 16, 2013

snappy-java-1.0.5-M2.jar works, just replace the older version under cassandra lib.
http://code.google.com/p/snappy-java/downloads/detail?name=snappy-java-1.0.5-M2.jar&can=2&q=

@Igosuki

This comment has been minimized.

Show comment
Hide comment
@Igosuki

Igosuki Mar 3, 2013

Yes, snappy 1.0.5 works just fine with JDK 7

Igosuki commented Mar 3, 2013

Yes, snappy 1.0.5 works just fine with JDK 7

pteichman added a commit to thefactory/datastore that referenced this issue Oct 30, 2013

Upgrade Snappy to 1.0.5
Summary:
1.0.4 doesn't work with Mavericks:
ptaoussanis/carmine#5

Test Plan: asdf

Reviewers: tberman, jyeo, stephan

Reviewed By: stephan

CC: stephan, jimmy, justin, jyeo, tberman

Differential Revision: http://phabricator.thefactory.com/D941

codefollower pushed a commit to codefollower/Cassandra-Java-Driver-Research that referenced this issue Nov 29, 2013

Use Cassandra 1.2.6
Cassandra 1.2.6 uses snappy-java 1.0.5 instead of 1.0.4.1.
snappy java 1.0.4.1 has problem on Java 7 environment.
ptaoussanis/carmine#5

tmcf pushed a commit to tmcf/carmine that referenced this issue Apr 1, 2015

Bump Nippy dependency (10.0.2)
This resolves the Snappy JDK7, OSX bug: ptaoussanis/carmine#5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment