2010-07-13 3 views
3

Linux의 Eclipse에서 java.lang.UnsatisfiedLinkError: no jtokyocabinet in java.library.path 문제를 해결하기 위해 3 시간을 소비하면됩니다.Eclipse에서 Tokyo Cabinet을 사용할 수있는 방법은 무엇입니까?

  • 다운로드 한 TC 및 TC-자바 소스,
  • 그들을 내장 모두 ./config --prefix =/USR은 (는/usr/lib에 있어야한다 관련 그래서 모든 것을 "JNI")
  • 세트 사용하여 완벽한 LD_LIBRARY_PATH =/usr/lib 및 CLASSPATH = "$ CLASSPATH : /usr/local/lib/tokyocabinet.jar"및 .profile에서 모두 내 보냅니다.
  • 프로젝트에 tokyocabinet.jar를 가져 왔습니다.

적절한 -Djava.library.path = 이외의 설정이 누락되었습니다. 설정? 심지어 웹이나 설명서에있는 jtokyocabinet에 관한 인터넷에서 아무것도 찾을 수 없습니다. 이 일을하는 데 필요한 비밀스런 소스는 무엇입니까?

답변

0

예, 뭔가 빠졌습니다. Eclipse는 자체 클래스 경로를 제어하므로 Eclipse 외부 환경에서 설정 한 내용은 아무런 영향을 미치지 않습니다.

프로젝트의 속성으로 이동하여 "경로 빌드"설정을 찾아 tc.jar (또는 jars) 경로를 빌드 경로에 추가해야합니다.

이클립스 프로젝트 내에/lib 디렉토리를 설정하는 것이 더 쉽습니다. 거기에 tokyo jar 파일을 복사하여 빌드 경로에 추가하십시오. 그렇게하면 외부 시스템 종속성이 아니라 프로젝트의 일부가됩니다 (Eclipse 설치에서 Eclipse 설치로 이동할 수 있음).

+0

/lib 디렉토리 트릭을 시도해 보았지만 여전히 이동하지 않았습니다. 다른 제품을 tokyocabinet과 유사하게 사용하려고 진지하게 생각해보십시오. 어떤 제안? – Marc

+0

들려주세요. 다른 DB 제품을 사용하는 것이 더 좋습니다. 순수한 Java 구현이있는 것이 바람직합니다. –

1

libjtokyocabinet.so에 대한 링크를 만들려고합니다. . JAVA_HOME/jre/lib/i386에 .0을 입력하십시오.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 

후 다시 코드를 시도 : 코드는, 보통은 /usr/local/lib에, tokyocabinet의 *.so and *.a 파일을 찾으려면 다음 명령을 실행할 수 없기 때문에

1

은입니다.

1

제 경우에는 OpenSUSE 12.3 64 비트와 Eclipse를 사용하는 것과 같은 문제가 있습니다. 첫째, kyotocabinet - 자바 패키지는이 저장소에서 다운로드 할 수 있습니다

http://download.opensuse.org/repositories/devel:/libraries:/c_c++/openSUSE_12.3/이 패키지는 제공

에 의해 사용되는 라이브러리가 /usr/lib64/libjkyotocabinet.so.1.1.0 kyotocabinet jar 당신은 maven이나 공식 사이트에서 얻을 수 있습니다. 나는 스 링크가 생성되는 것을 발견이 lib 디렉토리를 찾고 : 난 그냥 말에 "0.1"없이 새로운 스 링크를 생성

[email protected]:/usr/lib64> ls -al /usr/lib64/libjkyoto* 
/usr/lib64/libjkyotocabinet.so.1 -> libjkyotocabinet.so.1.1.0 
/usr/lib64/libjkyotocabinet.so.1.1.0 

을 ...

sudo ln -s libjkyotocabinet.so.1.1.0 libjkyotocabinet.so 

/usr/lib64/libjkyotocabinet.so -> /usr/lib64/libjkyotocabinet.so.1.1.0 

그리고 모든 괜찮아 일 이 같음

System.loadLibrary("jkyotocabinet"); 

라이브러리 이름이 "."과 다른 것으로 끝나는 경우 작동하지 않습니다.그래서 "

관련 문제