Я пытаюсь вызвать свой класс java из c ++ (ms vc 2008) с помощью JNI, но проблема в том, что FindClass работает только тогда, когда в моем классе java нет импортированных пакетов. Если я добавлю какой-либо пакет (например, java.lang.String или java.io.File), FindClass завершится ошибкой и не вернет никакого значения. Почему?
C ++ КОД: /////////////////////////////////////
JNIEnv *env;
JavaVM * jvm;
JavaVMInitArgs vm_args;
JavaVMOption options;
options.optionString = "-Djava.class.path=c:\\mypackage.jar";
vm_args.version = JNI_VERSION_1_6;
vm_args.nOptions = 1;
vm_args.options = &options;
vm_args.ignoreUnrecognized = 0;
int ret = JNI_CreateJavaVM(jvm, (void**)&env, &vm_args);
if(env == NULL)
printf("\nJVM Failed\n");
jclass cls = env->FindClass("mypackage/test/MyClass");
if(cls==0)
{
printf("\nFindClass Failed\n");
}
JAVA-код: //////////////////////////////////////
package mypackage.test;
import java.io.File; //if I comment this row, FindClass works...
public class MyClass {
}
UPDATE:
ЭТО МОЙ КОД: http://www.sendspace.com/file/233tfm
- копия в C: \ JNITest
- изменить рабочий каталог в свойствах \ отладочных настроек проекта
- проверить optionString в JNI_test1.cpp
большое спасибо,
Риккардо