2011-11-26 3 views
1

또 다른 Java jar 질문 게시에 사과드립니다. 기존 similar questions을 살펴 봤지만 기존 답변에서 찾은 조언을 사용하여 Example 클래스를 실행하지 못했습니다.지난 CLASSPATH 문제를 해결하고 OSX에서 OpenKinect Java 예제를 컴파일하려면 어떻게해야합니까?

는 여기에 지금까지 시도 무엇 : 그것은 OpenKinect의 경로를 찾지 못했습니다처럼

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:. 

보인다. 내가 다시 예제를 실행하려고 같은 폴더 (cp ../../dist/OpenKinect.jar)에서 항아리를 복사하려고 :

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) 

지금은 예 경로를 찾지 못했습니다 그것을 것을, 그래서 나는 .$CLASSPATH에서 작동하지 않았다 가정 나는 이유를 모른다.

나는 앞뒤로 -cp와 함께 연주하지만, 자바는 말한다 유지 "아니오!"

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) 

그 중 하나가 항아리의 경로를 찾는 것 같다,하지만 예 또는 다른 방법으로 주위와에 나는 서클에서 뛰어 다니고있다. 나는, 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/Libraries/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Classes과 jnilib에 항아리를 복사,하지만 기쁨.

팁이 있습니까?

답변

3

여기에 오류 메시지에 대한 오해가 있습니다. 클래스 경로와 라이브러리 경로에는 차이가 있습니다. jar와 현재 디렉토리에 대한 점으로 클래스 경로가 올바르지 만 Kinect SDK의 기본 부분이있는 경로는 지정하지 않습니다.

당신은

-Djava.libray.path=(path to where the native Kinect libs lie) 

나는 OpenKinect 구조를 모르는를 추가하여이를 수행하지만, 종종는 "빈"또는 "기본"디렉토리의 일종이다.

설명 :이 경로는 OpenKinect.dll (Windows) 또는 libOpenKinect.so (Linux 및 친구) 등이있는 경로입니다.

페이지 맨 아래에있는 http://openkinect.org/wiki/Java_JNI_Wrapper을 참조하십시오.

+0

그럴 수도 있습니다. 언급했듯이, OpenKinect.so 라이브러리가 있으므로'java -cp $ CLASSPATH -Djava.library.path = ../../dist/libOpenKinect.so Example'하지만'main "스레드에서 예외가 발생했습니다 .lang.UnsatisfiedLinkError : java.lang.ClassLoader.loadLibrary (ClassLoader.java:1758)에서 java.library.path \t에는 OpenKinect하지 java.lang.Runtime.loadLibrary0에서 \t (Runtime.java:823) \t에서 java.lang.System.loadLibrary (System.java:1045) \t at org.openkinect.Context. \t at Example.main (Example.java:52) –

+0

.so 파일 즉, dist 폴더가 아닌 경로를 지정하십시오. –

+0

('java -cp $ CLASSPATH -Djava.library.path = ../../dist/Example'), 많은 행운은 없었습니다. ('예외 스레드 "main"java.lang.UnsatisfiedLinkError : no OpenKinect java.library.java.lang.ClassLoader.loadLibrary (ClassLoader.java:1758) java.lang.Runtime.loadLibrary0에서 \t (Runtime.java:823)에서 경로 \t java.lang.System.loadLibrary (System.java에서 \t : 1045) \t at org.openkinect.Context. (Context.java:43) \t at Example.main (Example.java:52) –