마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

자바 실행시 에러발생 해결방법좀 도와주세요

0 추천
Exception in thread "main" java.lang.UnsatisfiedLinkError: no pesq in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.sktelecom.hdvoice.PesqHelper.<clinit>(PesqHelper.java:5)
 
이클립스에서 실행시 에러 내용입니다.
 
 
이건 cygwin에서 실행시 에러 내용입니다.
 
 
libpesq.so 라는 라이브러리 파일을 참조합니다. 라이브러리를 c파일 위치와 jdk/lib경로에도 다 넣었는데
경로를못찾는것같습니다
 
설정을 어떻게 해줘야 하나요 ㅠㅠ
 
패스문제인것같은데 어디가 잘못됐는지 모르겠습니다 도움좀부탁드려요 ㅠㅠ
음무 (17,820 포인트) 님이 2014년 2월 18일 질문

1개의 답변

+1 추천
 
채택된 답변
so 파일의 위치는 빌드 하려는 프로젝트 내 libs/cpu_type/ 에 위치해야 합니다.

cpu_type 은 armeabi, x86 식입니다.  타겟이 되는 머신에 맞춰서 넣어보세요

보통은 해당 프로젝트의 소스가 prj/jni 에 존재하고 ndk 로 빌드시 알아서 생성 됩니다.
aucd29 (218,390 포인트) 님이 2014년 2월 18일 답변
음무님이 2014년 2월 18일 채택됨
프로잭트 내에 libs폴더를 만들고 그 하위에 armeabi폴더를 만들었습니다.
그안에 so파일을 넣었는데 마찬가지네요
시그윈이나 명령프롬프트에서는 위 사진과 같은 에러가 계속 발생하고
(실행명령어 class파일이 있는 경로에서 java 파일명)

이클립스에서는 NoClassDefFound 에러는 발생하지 않는데

위에 쓴것과 같이

Exception in thread "main" java.lang.UnsatisfiedLinkError: no pesq in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at com.sktelecom.hdvoice.PesqHelper.<clinit>(PesqHelper.java:5)

이런에러가 발생하네요. ..

so파일명은 libpesq.so 이고

(PesqHelper.java:5)의 내용은

System.loadLibrary("pesq");
입니다.

혹시 조금만 더 도움부탁드려도될까요
ndk  쪽은 동적 로드 하는 부분이라 이클립스와는 상관이 없습니다.
http://buedt.tistory.com/50 이 글을 참조해보세요
걸어주신 링크 잘 봤습니다.

혹시 cygwin에서 so라이브러리를 참조하는 클래스가 실행이 안되는건가요 ??
리눅스환경이 아니라 윈도우 환경에서 cygwin은 컴파일까지만 해주고 실행자체는 안되는게 아닌가 하는 의문이 문득 듭니다.
아무리 해도 해결이 안되서요, 두번째 에러는 잡았는데 맨처음 UnsatisfiedLinkError는 도저히 안잡히네요
cygwin 에서 빌드한 so 도 잘 작동 됩니다. ndk로 빌드하신거 맞죠?
아니요 자바환경에서하고있어서 gcc로(makefile만들어서) 라이브러리 생성했습니다 ..
사용 방법 자체가 문제가 있네요 -_ -
크로스 컴파일에 대해서 공부하셔야 겠는데요
...