2012-01-04 3 views
2

javacpp를 사용하려고하는데 Eclipse (+ Mac OS)에서 약간의 문제가 있습니다. Eclipse에서 javacpp가 작동하지 않습니다. --ClassNotFoundException (JNI 사용)

내 명령 줄이 실행

은 - 그것을 잘 작동합니다

#include <string> 

namespace LegacyLibrary { 
    class LegacyClass { 
     public: 
      const std::string& getProperty() { return property; } 
      void setProperty(const std::string& property) { this->property = property; } 
     private: 
      std::string property; 
    }; 
} 

import com.googlecode.javacpp.*; 
import com.googlecode.javacpp.annotation.*; 

@Platform(include="LegacyLibrary.h") 
@Namespace("LegacyLibrary") 
public class LegacyLibrary { 
public static class LegacyClass extends Pointer { 
    static { Loader.load(); } 
    public LegacyClass() { allocate(); } 
    private native void allocate(); 

    public native @ByRef String getProperty(); 
    public native void setProperty(String property); 
} 

public static void main(String[] args) { 
    LegacyClass l = new LegacyClass(); 
    l.setProperty("Hello World!"); 
    System.out.println(l.getProperty()); 
} 

}

를 내가 얻을

this 게시물에 제안 최종 결과 : "hello w orld ". 이제

내 이클립스 IDE에이를 복용하고 있는데 어떤 이유로,이 오류가 얻을 : 나는 패키지 com.test에이 개 파일을 배치하고 javacpp.jar 내가에 배치

Exception in thread "main" java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: com.test.LegacyLibrary 
    at com.googlecode.javacpp.Loader.load(Loader.java:293) 
    at com.googlecode.javacpp.Loader.load(Loader.java:271) 
    at com.test.LegacyLibrary$LegacyClass.<clinit>(LegacyLibrary.java:12) 
    at com.test.LegacyLibrary.main(LegacyLibrary.java:23) 
Caused by: java.lang.ClassNotFoundException: com.test.LegacyLibrary 
    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 sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:169) 
    at com.googlecode.javacpp.Loader.load(Loader.java:291) 
    ... 3 more 

을 classpath. 여기에 누락 된 것이 있습니까?!?! 오류 메시지는 클래스 경로의 내용이 잘못되었거나 누락되었음을 나타냅니다. 그러나 무엇입니까? (또한 다른 폴더에 javacpp.jar 속성을 가리 키려고했지만 같은 오류 메시지가 나타납니다). 어쩌면 VM 인수?!?!

감사합니다.

+0

하는 것으로는'com.test.LegacyLibrary'는 기본 패키지에'LegacyLibrary'와 같은 클래스가 아닙니다. JavaCPP 빌더를 다시 시작하여 새로운 클래스의 새로운 네이티브 라이브러리를 얻었습니까? –

+0

나는 똑같은 문제가있다! 해결책을 찾았습니까? – mrmclovin

+0

아니, 나는하지 않았다. 만약 당신이 그것을 얻었 으면 - – adhg

답변

0

javacpp.jar 파일을 프로젝트 라이브러리에 추가 했습니까? 프로젝트 속성, 빌드 경로 정보로 이동하여 라이브러리 탭이 있어야합니다. 외부 Jar 파일을 추가하고 javacpp.jar 파일을 선택하십시오.

enter image description here

+0

내가 벌써 시도했다 (나는 프로젝트의 속성을 통해 javacpp.jar를 추가했다는 질문에 썼다). 같은 오류 메시지. – adhg

+0

해결책이 있습니까? 나는 지금 같은 문제가있다. – WonderSoftwares

0

이동 소스 폴더를 확장 할 수있는 화살표를 탭 소스의 클릭으로 속성 -> Java 빌드 경로를 로젝트, 다음 네이티브 라이브러리 위치를 선택하고 모든 경로를 찾은 후 편집을 클릭합니다 LegacyLibrary.h 파일 및 그 작동합니다.

Add native library to Eclipse project

관련 문제