很抱歉发布另一个Java jar问题。我确实查看了现有的similar questions,但仍无法使用现有答案中的建议来使Example类运行。
这是我到目前为止尝试过的:
george-profenzas-macbook:src george$ ls
Example.java org
george-profenzas-macbook:src george$ javac -cp $CLASSPATH Example.java
george-profenzas-macbook:src george$ ls
Example$1.class Example$2.class Example$3.class Example.class Example.java org
george-profenzas-macbook:src george$ java -cp $CLASSPATH Example
Exception in thread "main" java.lang.UnsatisfiedLinkError: no OpenKinect in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1045)
at org.openkinect.Context.<clinit>(Context.java:43)
at Example.main(Example.java:52)
george-profenzas-macbook:src george$ echo $CLASSPATH
/Users/george/Downloads/shiffman-libfreenect-2e0f185/wrappers/java/dist/OpenKinect.jar:.
看起来找不到OpenKinect的路径。我尝试将jar复制到同一文件夹(
cp ../../dist/OpenKinect.jar
),然后尝试再次运行Example:george-profenzas-macbook:src george$ java -cp OpenKinect.jar Example
Exception in thread "main" java.lang.NoClassDefFoundError: Example
Caused by: java.lang.ClassNotFoundException: Example
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
现在看来似乎找不到通往Example的路径,所以我认为
.
中的$CLASSPATH
无效,我也不知道为什么。我一直来回玩-cp,但是java说“不!”:
george-profenzas-macbook:src george$ java -cp "OpenKinect.jar:./Example.java" Example
Exception in thread "main" java.lang.NoClassDefFoundError: Example
Caused by: java.lang.ClassNotFoundException: Example
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
george-profenzas-macbook:src george$ java -cp "OpenKinect.jar:." Example
Exception in thread "main" java.lang.UnsatisfiedLinkError: no OpenKinect in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1045)
at org.openkinect.Context.<clinit>(Context.java:43)
at Example.main(Example.java:52)
george-profenzas-macbook:src george$ java -cp .:OpenKinect.jar Example
Exception in thread "main" java.lang.UnsatisfiedLinkError: no OpenKinect in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1045)
at org.openkinect.Context.<clinit>(Context.java:43)
at Example.main(Example.java:52)
似乎它找到了jar的路径,但没有找到Example的路径,反之亦然,我正在盘旋。
我将Java路径设置为指向1.6 64位,因此
java -version
打印:java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-384-10M3425)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-384, mixed mode)
我什至将罐子复制到
/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Classes
,将jnilib复制到/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Libraries
,但没有任何乐趣。有小费吗 ?
最佳答案
您在这里遇到的是对错误消息的误解。类路径和库路径之间有区别。当使用当前目录的jar和点正确获取类路径时,您无需指定Kinect SDK本机部分所在的路径。
您可以通过添加
-Djava.libray.path=(path to where the native Kinect libs lie)
我不知道OpenKinect的结构,但通常它是某种“ bin”或“ native”目录。
需要说明的是:这是OpenKinect.dll(对于Windows)或libOpenKinect.so(Linux和朋友)等的路径。
请参阅页面底部的http://openkinect.org/wiki/Java_JNI_Wrapper。