2014-10-08 3 views
1

라이브러리 코드에서 JNI_CreateJavaVM 함수를 호출하는 라이브러리를 사용하고 있습니다. 그러나 일부 JNI Wrappings 또한 필요하며 JNIEnv *를 내 응용 프로그램에 가져 오기 위해 동일한 함수 JNI_CreateJavaVM을 호출해야합니다.JNI_CreateJavaVM 함수를 두 번 호출하는 중

두 번째 호출이 실패합니다.

누군가 나에게이 작업을 수행 할 방법이 있는지 알려 주시기 바랍니다.

NB : 라이브러리는 라이브러리 내부에서 생성 된 JNIEnv *를 가져 오거나 설정하는 것을 지원하지 않습니다.

+0

내가하고있는 일을 설명하기 위해 코드를 입력하면 내가 볼 수 있습니다 – jgr208

답변

2

당신은 동일한 프로세스에서 하나 이상의 JVM 만들 수 없습니다 : JDK/JRE 1.2

를 단일 프로세스에서 여러 VM의 생성은 지원되지 않습니다.

AttachCurrentThread 기능을 사용하더라도 현재 스레드를 기존 JVM에 첨부 할 수 있습니다. 호출 API에 대해서는 here 문서를 참조하십시오.

JavaVM 개체에 대한 포인터가 필요합니다. JNI_GetCreatedJavaVMs()이 도움이 될지 확인해보십시오. 프로세스 당 (단일 요소 목록 만 사용 가능할 것인가)인지 또는 컴퓨터 당인지 확실하지 않습니다. 두 경우 모두 JavaVM은 라이브러리가 사용하고있는 것이거나 그렇지 않은 것일 수 있습니다. 액세스 할 수 있으면 Java 응용 프로그램의 다른 오브젝트에 대한 호출을 할 수 있지만 스레드로부터 안전한지 확인해야합니다.

+0

verimuch Dennis –

관련 문제