Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何克服类路径问题并在OSX上编译OpenKinect Java示例?_Java_Jar_Java Native Interface_Kinect - Fatal编程技术网

如何克服类路径问题并在OSX上编译OpenKinect Java示例?

如何克服类路径问题并在OSX上编译OpenKinect Java示例?,java,jar,java-native-interface,kinect,Java,Jar,Java Native Interface,Kinect,很抱歉又发布了一个JavaJAR问题。我确实查看了现有的答案,但仍然没有使用现有答案中的建议来运行课程 以下是我迄今为止所做的尝试: 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.c

很抱歉又发布了一个JavaJAR问题。我确实查看了现有的答案,但仍然没有使用现有答案中的建议来运行课程

以下是我迄今为止所做的尝试:

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:.
现在它似乎没有找到示例的路径,所以我假设
$CLASSPATH
中的
不起作用,我不知道为什么

我一直在反复使用-cp,但java说“不!”

我甚至将jar复制到
/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和friends)等所在的路径


请看页面底部。

我想可能就是这样。正如您所提到的,有一个OpenKinect.so库,所以我尝试了
java-cp$CLASSPATH-Djava.library.path=../../dist/libOpenKinect.so示例
,但在线程“main”java.lang.unsatifiedlinkError中得到了
异常在java.lang.Runtime.loadLibrary0(Runtime.java:823)在java.lang.System.loadLibrary(System.java:1045)在org.openkinect.Context.(Context.java:43)在Example.main(Example.java:52)
只将其指向路径,而不是.so文件,即dist文件夹。尝试过(
java-cp$CLASSPATH-Djava.library.path=../dist/Example
),但是运气不太好:(
线程“main”java.lang.UnsatifiedLinkError中的异常:java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758)中的java.library.path中没有OpenKinect,java.lang.Runtime.loadLibrary0(Runtime.java:823)中没有OpenKinect,java.System.loadLibrary(System.java:1045)中没有OpenKinect,org.OpenKinect.Context中没有OpenKinect(Context.java:43)中的Example.main中没有OpenKinect(Example.java:52)
Strange。尝试将其放在与jar相同的路径中。然后更改为它,并将java.library.path作为一个点。也许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)
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)
-Djava.libray.path=(path to where the native Kinect libs lie)