Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JNI создание нового объекта 
V
    Опции темы
wertklop
Дата 21.5.2013, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.9.2008

Репутация: нет
Всего: нет



Добрый день!

В java-классе определена переменная и нативный метод
Код

private HashMap<String, Integer> mColumns;
private static native String nativeMethod(String string);

Утилитой javah сформировался h-файл с объявлением:
Код

JNIEXPORT jstring JNICALL Java_<имя_пакета>_nativeMethod(JNIEnv *, jclass, jstring);

Задача состоит в том, что бы в С++ файле в методе nativeMethod инициализировать объект mColumns. Делаю так:
Код

    jclass clazz = env->FindClass("<myClass>");
    jfieldID mColumnsField = env->GetFieldID(clazz, "mColumns", "Ljava/util/HashMap;");
    jclass hashMapClass = env->FindClass("java/util/HashMap");
    jobject mColumnsObject = env->ToReflectedField(hashMapClass, mColumnsField, JNI_FALSE);(*)
    jmethodID init = env->GetMethodID(hashMapClass, "<init>", "(I)V");
    mColumnsObject = env->NewObject(hashMapClass, init, columnCount);


Если я правильно понял документацию, то в строке (*) я получаю объект. Но в итоге выполнения данного блока в java mColumns = null, как и до выполнения кода.
В JNI есть такой метод, как GetObjectField(JNIEnv *env, jobject obj, jfieldID fieldID); который работал бы, но(!!!) у меня не передается тот самый jobject obj, который обычно объявляется в качестве передаваемого аргумента в методе(т.е. в nativeMethod).
Подскажите, как мне быть в данной ситуации?
PM MAIL   Вверх
wertklop
Дата 21.5.2013, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.9.2008

Репутация: нет
Всего: нет



Решение нашлось:
надо было просто нативный метод объявить не статическим
smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3776 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.