Skip to content
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

UnsatisfiedLinkError of libjnitensorflow.dylib #335

Closed
sj6077 opened this issue Dec 14, 2016 · 15 comments
Closed

UnsatisfiedLinkError of libjnitensorflow.dylib #335

sj6077 opened this issue Dec 14, 2016 · 15 comments
Labels

Comments

@sj6077
Copy link

sj6077 commented Dec 14, 2016

There is a linking error in tensorflow. I used maven and I added below to the pom.xml

<dependency>
      <groupId>org.bytedeco.javacpp-presets</groupId>
      <artifactId>tensorflow-platform</artifactId>
      <version>0.11.0-1.3</version>
</dependency>

My platform is macosx-x86_64. Is there anything that I missed?
Full error messages are here.

java.lang.UnsatisfiedLinkError: no jnitensorflow in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:804)
at org.bytedeco.javacpp.Loader.load(Loader.java:613)
at org.bytedeco.javacpp.Loader.load(Loader.java:530)
at org.bytedeco.javacpp.tensorflow.(tensorflow.java:10)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.bytedeco.javacpp.Loader.load(Loader.java:585)
at org.bytedeco.javacpp.Loader.load(Loader.java:530)
at org.bytedeco.javacpp.tensorflow$Scope.(tensorflow.java:14559)
at edu.snu.cay.dolphin.async.tensorflow.sample_example.TensorflowTrainer.initialize(TensorflowTrainer.java:60)
at edu.snu.cay.dolphin.async.AsyncWorkerTask.call(AsyncWorkerTask.java:75)
at org.apache.reef.runtime.common.evaluator.task.TaskRuntime.runTask(TaskRuntime.java:277)
at org.apache.reef.runtime.common.evaluator.task.TaskRuntime.run(TaskRuntime.java:137)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.UnsatisfiedLinkError: /Users/soo/.javacpp/cache/dolphin-async-0.1-SNAPSHOT-shaded.jar/org/bytedeco/javacpp/macosx-x86_64/libjnitensorflow.dylib: dlopen(/Users/soo/.javacpp/cache/dolphin-async-0.1-SNAPSHOT-shaded.jar/org/bytedeco/javacpp/macosx-x86_64/libjnitensorflow.dylib, 1): Symbol not found: __ZN10tensorflow19kColocationAttrNameE
Referenced from: /Users/soo/.javacpp/cache/dolphin-async-0.1-SNAPSHOT-shaded.jar/org/bytedeco/javacpp/macosx-x86_64/libjnitensorflow.dylib
Expected in: /Users/soo/.javacpp/cache/dolphin-async-0.1-SNAPSHOT-shaded.jar/org/bytedeco/javacpp/macosx-x86_64/./libtensorflow.so
in /Users/soo/.javacpp/cache/dolphin-async-0.1-SNAPSHOT-shaded.jar/org/bytedeco/javacpp/macosx-x86_64/libjnitensorflow.dylib
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:784)
... 13 more

@sj6077 sj6077 changed the title UnsatisfiedLinkError libjnitensorflow.dylib UnsatisfiedLinkError of libjnitensorflow.dylib Dec 14, 2016
@saudet
Copy link
Member

saudet commented Dec 14, 2016

It works fine here on Yosemite. What version of Mac OS X are you using?

@sj6077
Copy link
Author

sj6077 commented Dec 14, 2016

It's Mac OS X v10.11.6. According to the cppbuild.sh of tensorflow, I think only gpu version is supported, is it right? My computer doesn't have any GPU, so I build tensorflow cpu version. I wonder it is the reason or not. And should I install tensorflow through cppbuild.sh?

@saudet
Copy link
Member

saudet commented Dec 14, 2016

No it's not related. I'm pretty sure it's just because your shaded JAR files contains the wrong version of the library.

@sj6077
Copy link
Author

sj6077 commented Dec 14, 2016

I built it as a same way on ubuntu, it works. I'm not sure because I installed tensorflow v0.11 using pip install.

@saudet
Copy link
Member

saudet commented Dec 14, 2016

Yes, you have an old version somewhere. libtensorflow.so doesn't come from tensorflow-0.11.0-1.3-macosx-x86_64, that comes with libtensorflow_cc.so. You'll need to find where libtensorflow.so comes from and get rid of that.

@saudet saudet closed this as completed Dec 14, 2016
@ByzenMa
Copy link

ByzenMa commented Jan 24, 2017

Hi, @saudet , I got a same linking error when I used version 0.11.0-1.3 in maven. Full error messages are as follows:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jnitensorflow in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1088)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:804)
at org.bytedeco.javacpp.Loader.load(Loader.java:613)
at org.bytedeco.javacpp.Loader.load(Loader.java:530)
at org.bytedeco.javacpp.tensorflow.(tensorflow.java:10)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:274)
at org.bytedeco.javacpp.Loader.load(Loader.java:585)
at org.bytedeco.javacpp.Loader.load(Loader.java:530)
at org.bytedeco.javacpp.helper.tensorflow$AbstractSession.(tensorflow.java:214)
at com.chanjet.ai.nlp.s2s.datahandler.TensorflowExample.(TensorflowExample.java:23)
at com.chanjet.ai.nlp.s2s.datahandler.TensorflowExample.main(TensorflowExample.java:68)
Caused by: java.lang.UnsatisfiedLinkError: /Users/mbz/.javacpp/cache/tensorflow-0.11.0-1.3-macosx-x86_64.jar/org/bytedeco/javacpp/macosx-x86_64/libjnitensorflow.dylib: dlopen(/Users/mbz/.javacpp/cache/tensorflow-0.11.0-1.3-macosx-x86_64.jar/org/bytedeco/javacpp/macosx-x86_64/libjnitensorflow.dylib, 1): Library not loaded: @rpath/libtensorflow.so
Referenced from: /Users/mbz/.javacpp/cache/tensorflow-0.11.0-1.3-macosx-x86_64.jar/org/bytedeco/javacpp/macosx-x86_64/libjnitensorflow.dylib
Reason: image not found
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1851)
at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1062)
at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:784)
... 10 more
Is there anything wrong with my tensorflow version somewhere? My platform is macosx-x86_64

@saudet
Copy link
Member

saudet commented Jan 24, 2017 via email

@ByzenMa
Copy link

ByzenMa commented Jan 24, 2017

OK, thanks for replying!

@saudet saudet added bug and removed question labels Jan 24, 2017
@saudet saudet reopened this Jan 24, 2017
@lefromage
Copy link

is there a workaround ?

saudet added a commit that referenced this issue Jan 28, 2017
 * Work around issues with TensorFlow on some versions of Mac OS X (issue #335)
@saudet
Copy link
Member

saudet commented Jan 28, 2017

@lefromage Yes, I included a workaround here until they decide to fix this upstream somewhere:
fa4fe01#diff-87f133fa4ea1f42529d4a75dfbeb247eR79

@lefromage
Copy link

lefromage commented Jan 28, 2017

Thanks @saudet

for those still using 0.11.0-1.3 the workaround on mac or linux
is to build libtensorflow.so from source and refer to it's location in LD_LIBRARY_PATH

git clone -b v0.11.0 --recurse-submodules https://github.com/tensorflow/tensorflow tensorflow-v0.11.0
cd tensorflow-v0.11.0

edit and replace in ./tensorflow/workspace.bzl , zlib-1.2.8 code block with zlib-1.2.11

native.new_http_archive(
name = "zlib_archive",
url = "http://zlib.net/zlib-1.2.11.tar.gz",
sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1",
strip_prefix = "zlib-1.2.11",
build_file = str(Label("//:zlib.BUILD")),
)

./configure
bazel build //tensorflow:libtensorflow.so
export LD_LIBRARY_PATH=${PWD}/bazel-bin/tensorflow/libtensorflow.so:$LD_LIBRARY_PATH

@saudet
Copy link
Member

saudet commented Jan 28, 2017

Just renaming libtensorflow_cc.so to libtensorflow.so should also work...

@alistairstead3408
Copy link

This is an issue I am having with mac, linux and windows :(

@saudet
Copy link
Member

saudet commented Feb 18, 2017

@saudet
Copy link
Member

saudet commented Mar 8, 2017

@saudet saudet closed this as completed Mar 8, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants