Comments (9)
It comes from that artifact you point out:
https://github.com/tensorflow/java/blob/master/tensorflow-core/tensorflow-core-api/pom.xml#L23-L27
from java.
Thanks @saudet ! I think I'm missing something fundamental. Please advise where might the bytedeco Pointer.class might be, to fix my java.lang.NoClassDefFoundError: org/bytedeco/javacpp/Pointer
? None of these are it:
tensorflow-java$ find . -name '*class'|grep Pointer
./tensorflow-core/tensorflow-core-api/target/classes/org/tensorflow/internal/c_api/Delete_func_Pointer.class
./tensorflow-core/tensorflow-core-api/target/classes/org/tensorflow/internal/c_api/TF_Buffer$Data_deallocator_Pointer_long.class
./tensorflow-core/tensorflow-core-api/target/classes/org/tensorflow/internal/c_api/Listener_BytePointer.class
./tensorflow-core/tensorflow-core-api/target/classes/org/tensorflow/internal/c_api/Compute_func_Pointer_TF_OpKernelContext.class
./tensorflow-core/tensorflow-core-api/target/classes/org/tensorflow/internal/c_api/Deallocator_Pointer_long_Pointer.class
from java.
What are you trying to do exactly?
from java.
Certainly, I have a my.jar
file, which contains all the class files. I ask where Pointer.class is, so I can put Pointer.class in my.jar
, and fix the NoClassDefFoundError
. The java classloader doesn't know where Pointer.class is. My commandline is java -jar my.jar tf --verbose
.
For example, for NdArray, I can put these classes in my.jar
, and my tests pass. I can use NdArray without exceptions.
tensorflow-java$ find . -name '*class'|grep NdArray|head
./ndarray/target/classes/org/tensorflow/ndarray/BooleanNdArray.class
./ndarray/target/classes/org/tensorflow/ndarray/ByteNdArray.class
./ndarray/target/classes/org/tensorflow/ndarray/NdArrays.class
./ndarray/target/classes/org/tensorflow/ndarray/DoubleNdArray.class
./ndarray/target/classes/org/tensorflow/ndarray/ShortNdArray.class
./ndarray/target/classes/org/tensorflow/ndarray/impl/AbstractNdArray.class
./ndarray/target/classes/org/tensorflow/ndarray/impl/dense/ByteDenseNdArray.class
./ndarray/target/classes/org/tensorflow/ndarray/impl/dense/AbstractDenseNdArray.class
./ndarray/target/classes/org/tensorflow/ndarray/impl/dense/LongDenseNdArray.class
./ndarray/target/classes/org/tensorflow/ndarray/impl/dense/FloatDenseNdArray.class
...
from java.
Your JAR file just doesn't contain all the class files. You'll need to add the missing ones
from java.
Indeed, but I don't know where Pointer.class is. It's missing. Where might it be? I would've thought mvn install
built it.
from java.
Try this: https://maven.apache.org/plugins/maven-shade-plugin/examples/includes-excludes.html
from java.
Thanks @saudet ! Having zero maven expertise, I see the mvn install
typescript I made has this line:
Downloading from central: https://repo.maven.apache.org/maven2/org/bytedeco/javacpp/1.5.3/javacpp-1.5.3.jar
So I downloaded that manually, and Pointer.class is in there:
$ unzip -l javacpp-1.5.3.jar |grep Pointer.class
5470 2020-04-13 21:52 org/bytedeco/javacpp/CharPointer.class
4505 2020-04-13 21:52 org/bytedeco/javacpp/FloatPointer.class
3378 2020-04-13 21:52 org/bytedeco/javacpp/BoolPointer.class
11444 2020-04-13 21:52 org/bytedeco/javacpp/PointerPointer.class
479 2020-04-13 21:52 org/bytedeco/javacpp/FunctionPointer.class
4522 2020-04-13 21:52 org/bytedeco/javacpp/DoublePointer.class
11136 2020-04-13 21:52 org/bytedeco/javacpp/BytePointer.class
15662 2020-04-13 21:52 org/bytedeco/javacpp/Pointer.class
4053 2020-04-13 21:52 org/bytedeco/javacpp/CLongPointer.class
4505 2020-04-13 21:52 org/bytedeco/javacpp/ShortPointer.class
4440 2020-04-13 21:52 org/bytedeco/javacpp/LongPointer.class
5547 2020-04-13 21:52 org/bytedeco/javacpp/IntPointer.class
4288 2020-04-13 21:52 org/bytedeco/javacpp/BooleanPointer.class
4055 2020-04-13 21:52 org/bytedeco/javacpp/SizeTPointer.class
Later, I may need to edit pom.xml as you suggest to whitelist the retention of javacpp-1.5.3.jar or other jars, to keep all the class files I need to make a working uber jar. I'm surprised javacpp-1.5.3.jar isn't in maven's ~/.ivy2 cache.
Pleased I get a different error now, will work on getting *.so in java.library.path, and close this ticket.
$ java -jar vis.tf.jar tf --verbose
DEBUG 1596918557098: Started ndarray TensorflowJavaTest.
DEBUG 1596918557364: matrix3d rank 3
DEBUG 1596918557364: Finished ndarray TensorflowJavaTest.
DEBUG 1596918557365: Started graph TensorflowJavaTest.
Warning: Could not load Loader: java.lang.UnsatisfiedLinkError: no jnijavacpp in java.library.path
Exception in thread "main" 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:1631)
at org.bytedeco.javacpp.Loader.load(Loader.java:1265)
at org.bytedeco.javacpp.Loader.load(Loader.java:1109)
at org.tensorflow.internal.c_api.global.tensorflow.<clinit>(tensorflow.java:12)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.bytedeco.javacpp.Loader.load(Loader.java:1176)
at org.bytedeco.javacpp.Loader.load(Loader.java:1125)
at org.tensorflow.NativeLibrary.load(NativeLibrary.java:48)
at org.tensorflow.TensorFlow.init(TensorFlow.java:111)
at org.tensorflow.TensorFlow.<clinit>(TensorFlow.java:126)
at org.tensorflow.Graph.<clinit>(Graph.java:730)
at vis.TensorflowJavaTest.run(tf.scala:76)
at vis.TensorflowJavaTest$.runArgs(tf.scala:56)
at vis.VIS$.main(vis.scala:171)
at vis.VIS.main(vis.scala)
Caused by: java.lang.UnsatisfiedLinkError: no tensorflow 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:1631)
at org.bytedeco.javacpp.Loader.load(Loader.java:1213)
... 14 more
Thanks for showing me a path to do this the right way in the future. Hope to get there soon!
from java.
Copying over the *.so files, the test completes in the docker container. Thanks again!
root@4f6083770318:tensorflow-java# java -jar my.jar tf --verbose
DEBUG 1596924611892: Started ndarray TensorflowJavaTest.
DEBUG 1596924612277: matrix3d rank 3
DEBUG 1596924612277: Finished ndarray TensorflowJavaTest.
DEBUG 1596924612278: Started graph TensorflowJavaTest.
DEBUG 1596924616479: Finished graph TensorflowJavaTest.
from java.
Related Issues (20)
- protobuf-java 3.19.4 contains 3 high vulnerabilities HOT 2
- Complex Tensor Implementation Missing? HOT 5
- ivy dependency not working on windows or linux, native TF code not found on classpath HOT 5
- Could not load dynamic library 'xxxxx'; dlerror: xxxxx.dll not found HOT 5
- org.tensorflow.TensorFlowException: Can't parse /<modelPath>/<somePathToFolder>/saved_model.pb as binary proto - JDK 17 HOT 15
- Compiling from source, cuDNN version is not compatible? How can I change the cuDNN compile version? HOT 2
- SavedModelBundle Unable to Load Models with coo_sparse Encoded Input HOT 1
- Tensor type issue HOT 3
- Unable to build the project using 'mvn install ' command HOT 4
- how to use importGraphDef to load model.pb file? HOT 2
- Modular Java app can't create tensor object HOT 3
- Read/Write method of DataBuffer is against intuition HOT 1
- Distributing an Apple Silicon binary HOT 2
- Error when using tensorflow-text on tensorflow-core HOT 8
- Reductions on losses that have dynamic size
- No documentation for 1.0.0 HOT 5
- The loss CatagoricalCrossEntropy is currently unusable in framework
- Build native codes current master fails HOT 4
- Native artifacts are pulling transitive dependencies
- Q: How to add Regularizer and Constraint effect correctly to a weight/bias variable or activity? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from java.