2013-05-24 2 views
0

정적 초기화 블록에서 하나의 Windows DLL을로드하는 Java 응용 프로그램을 만들었습니다. 코드 조각은 아래와 같습니다 :System.loadLibrary() 정적 블록에서 예외를 반환합니다

// MyTestJava class starts 
class MyTestJava 
{ 

static 
    { 
     System.loadLibrary("MyLib"); 
    } 
} // MyTestJava class def ends here 

나는 정적 블록에서 수행 라이브러리 초기화의 종류, JVM은 java.library.path에서 검색해야한다고 들었습니다. 그래서 다음과 같이 JVM의 라이브러리 경로를 설정하고 폴더 아래에 MyLib.dll을 넣습니다.

options[1].optionString = "-Djava.library.path=C:\\Libs"; 

Java 응용 프로그램에서 불행히도 불행하게도 Unsatisfied Link Error가 발생합니다.

답변

1

명확하지 무엇 options[1].optionString = "-Djava.library.path=C:\\Libs"; 수단을 사용하여 파일의 절대 경로를 제공하는 시도 할 수 있습니다. java.library.path를 java arg로 전달해야합니다

java -Djava.library.path=C:\Libs MainClass 
+0

죄송합니다. 실제로 options [1] .optionString은 API JNI_CreateJavaVM()에 대한 인수로 주어지며 C++ 프로그램에서 JVM을 시작합니다. 다른 API는 클래스 경로입니다. – Jaydhar

0

먼저 getEnv를 호출하고 "java.library.path"가 실제로 라이브러리를 참조하는지 확인하십시오. 은 그렇지 당신은

static 
{ 
System.load("C:\\Libs"); 
} 
+0

감사합니다. 릭!하지만 절대 경로는 사용할 수 없습니다. 또한 명시 적으로 lib 경로를 설정하는 System.SetProperty 메서드를 시도했습니다. 그러나 그것은 또한 나를 도왔다. 절대 경로를 찾지 않고 해결할 수있는 다른 방법은 없을까요? – Jaydhar

+0

getEnv를 시도하고 java.library.path의 값을 확인 했습니까? – RickDavis

관련 문제