2009-04-08 2 views
3

Я пытаюсь использовать JNI на WindowsXP, версия Java:Подписи JNI для вложенных классов?

ява версия "1.6.0_13" Java (TM) SE Runtime Environment (сборка 1.6.0_13-b03) Java HotSpot (TM) Client VM (строительство 11,3-B02, смешанный режим, обмен)

При попытке получить JClass для вложенного класса

JClass с = env-> FindClass ("A $ B"); утвердить (c);

Вторая строка утверждает, что то же самое работает в Linux с немного другой версией Java (1.5 ... IIRC).

Я пытался несколько перестановок, как

LA $ B; A.B LA.B;

, но безрезультатно.

Любые советы будут высоко оценены.

Мартин

ответ

1

Похоже, этот вопрос был решен в this thread.

Update: Oracle переместили на форумах, новое расположение Signature for nested class?

Вот как был решен вопрос:

Хорошо, я наконец-то нашел эту проблему. Вложенный класс скомпилирован в отдельный объект класса Java (A $ B.class) - немного неопределенный для программиста на C/C++. Я не упаковал файл, поэтому класс был объявлен как «не найден». Интересно, что он работал на Linux. Спасибо за вашу помощь!

Еще один намек от меня: В случае FindClass возвращает нуль не только assert и догадку. По крайней мере, позвоните env->ExceptionDescribe(), чтобы получить стек на stderr. Еще лучше, используйте env->ExceptionOccurred(), чтобы проверить, генерируется ли исключение Java, как и любой другой метод Java, который вы вызываете.

+1

Ссылка теперь мертва. (Большое спасибо Oracle!) Можете ли вы обобщить, что это было? –

Смежные вопросы