2009-04-08 6 views
3

Ich versuche JNI auf WindowsXP, Java-Version zu verwenden:JNI-Signaturen für verschachtelte Klassen?

java version "1.6.0_13" Java (TM) SE Runtime Environment (build 1.6.0_13-b03) Java HotSpot (TM) Client VM (Build 11.3-b02, mixed mode, sharing)

Beim Versuch JClass für eine verschachtelte Klasse

JClass c = env> Findclass ("A $ B") zu erhalten; Behauptung (c);

die zweite Linie behauptet, Das Gleiche funktioniert ok auf Linux mit etwas anderen Version von Java (1.5 ... IIRC).

Ich habe mehrere Permutationen versucht, wie

LA $ B; A.B LA.B;

aber ohne Erfolg.

Jeder Rat wird sehr geschätzt.

Martin

Antwort

1

Scheint, wie das Problem in this thread gelöst wurde.

Update: Oracle die die Foren bewegt, der neue Standort ist Signature for nested class?

Hier ist, wie das Problem behoben wurde:

Ok, habe ich endlich das Problem. Die verschachtelte Klasse wird in ein separates Java-Klasse-Objekt erstellt (A $ B.class) - ein bisschen unexpecte für C/C++ Programmierer. Ich habe die Datei nicht gepackt, daher wurde die Klasse als "nicht gefunden" gemeldet. Interessant, dass es unter Linux funktioniert hat. Danke für Ihre Hilfe!

Ein weiterer Hinweis von mir: Falls FindClass kehrt tun null nicht nur assert und Vermutung. Am allerwenigsten env->ExceptionDescribe() rufen einen Stacktrace auf stderr zu bekommen. Besser noch, verwenden env->ExceptionOccurred() für die Java-Ausnahme überprüfen geworfen, so wie Sie es auf einer anderen Java-Methode rufen Sie an.

+1

Link ist jetzt tot. (Danke so viel Oracle!) Kannst du zusammenfassen was es war? –