Notice: MediaWiki has been updated. Report any rough edges to

Java JNI Wrapper

From OpenKinect
Jump to: navigation, search

Effort to create a Java JNI wrapper for libfreenect.



Who is involved

Coordinator/Development: Michael Nischt

Current Status



RedHat/Fedora Linux

1. Install libfreenect based RedHat/Fedora instructions here: Installation/Compilation Guides Until JNI code has been merged into use Note that you probably don't have to go beyond the "clone the repository" step, but probably a good idea to make sure that glview is working before proceeding.
2. Move to the Java wrapper directory:

$ cd ./libfreenect/wrappers/java/

3. Tweak as needed. For one FC12 install this involved removing the "-m64" g++ option, changing the line "LIBFREENET_LIBRARY=../../lib/libfreenect.a" to "LIBFREENET_LIBRARY=../../build/lib/libfreenect.a", and changing "JDK_HOME" to "JAVA_HOME" (just added "JDK_HOME=${JAVA_HOME}" before "JNI_SRC_DIR=OpenKinectJNI"
4. Build the jar:

$ sh


RedHat/Fedora Linux

1. Compile the demo:

$ javac -d ./ -classpath .:./dist/OpenKinect.jar ./OpenKinect/src/

2. Move to the executable directory:

$ cd dist

3. Change to root:

$ su

4. Run the demo:

$ java -Djava.library.path=. -classpath .:./OpenKinect.jar Example

Note that the -Djava tells Java where to look for the native library. Even though is in the "dist" (current) directory, Java may not see it without the "-D" option. This results in "Exception in thread "main" java.lang.UnsatisfiedLinkError: no OpenKinect in java.library.path"

The demo creates two jpg files, "kinect.color.jpg" & "kinect.depth.jpg" in the current user's home directory (e.g "/root/"). If you have those files, you've succeeded.

Sample Code