Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Вызов java метода из C++ через JNI |
Автор: x8m6 16.12.2010, 22:36 |
Нужно вызвать метод у java- объекта через JNI. Вопрос 1: Как получить указатель на интерфейс env? Вопрос 2: Как получить уже созданный в памяти java-объект (именно получить с уже заполненными полями, а не создать новый экземпляр)? |
Автор: x8m6 17.12.2010, 23:14 | ||||||
Мне нельзя вызывать нативный код в Java.
т.е. получается чтобы вызвать метод у объекта уже нужно иметь ссылку на этот объект - в данном примере thd. Откуда ее взять? Или можно ее занулить, тогда после вызова метода вернется объект? И как получить нужный мне экземпляр(c требуемыми значениями полей)? Я так понимаю что никак. Единст. способ - это синглтон. |
Автор: LSD 20.12.2010, 12:09 | ||
Тогда я вообще не понимаю, как твой код на C++ должен получить управление.
Это уже вопрос не по JNI, это скорее архитектура. Где и как хранить ссылку, чтобы ее можно было получить из произвольного участка кода. |
Автор: x8m6 20.12.2010, 20:47 | ||
получить ссылку на запущенную JVM, от туда достать как-то env. |
Автор: LSD 22.12.2010, 11:44 |
Ты хочешь внедриться в уже запущенную JVM? Ну тогда тебе точно не сюда, с помощью JNI внедрится в другой процесс нельзя. И как это сделать будет зависеть от того какая ОС используется. А вообще, есть JMX с помощью которого можно из другого процесса получить некие данные из уже запущенной JVM. |
Автор: Vitaly333 22.12.2010, 14:00 | ||||
А как же вот этот метод из jni.h:
|
Автор: LSD 23.12.2010, 13:28 | ||
А что такого в этом методе? http://download.oracle.com/javase/1.4.2/docs/guide/jni/spec/invocation.html
То что можно создать JVM из native приложения, не означает, что можно так же просто внедрится в уже запущенную JVM. |