OWLPAI und JNI
-
Hallo zusammen,
ich habe keine Ahnung, ob ich in diesem Teil des Forums richtig angesiedelt bin mit meiner Frage, ich bin einfach so dreist und poste die Frage hier.
Folgendes Problem tut sich bei mir auf:
Ich bin im Moment damit beschäftigt die OWLAPI für C++ verfügbar zu machen. Für dieses Vorhaben nehme ich das JNI zu Hilfe, da es zur Implementierung keine, in meinen Augen bessere, Möglichkeit gibt, dies umzusetzen.
Ich stecke im Moment in Codezeile 50 fest, ich versuche also eine URI über C++ zu erstellen:
jmethodID javamethod; cout << "Methode GetMethod " << className << endl << methodName << endl << endl; jstring jstring_URI; jstring_URI= env->NewStringUTF(URIName.c_str()); javamethod = env->GetStaticMethodID(FindClass(className.c_str()), methodName.c_str(),"(jstring_URI;)Ljava/net/URI;");Wenn ich versuche die Methode "create" aufzurufen findet die Java VM diese nicht, ich habe keine Ahnung woran es liegt. Die Klasse:
char classnameURI[] ="java/net/URI";wird allerdings gefunden. Meine Vermutung ist, dass ich eine falsche Signatur übergebe, auch das ist nicht der Fall wie man mit javap -s herausfinden kann
public static java.net.URI create(java.lang.String);
Signature: (Ljava/lang/String;)Ljava/net/URI;Dennoch wird die Methode nicht gefunden, hat jemand von euch eine Idee?
Viele Grüße,
Sukka
-
Haste ne vernünftige Fehlermeldung?
-
Hi,
eine Fehlermeldung dazu gibts nicht, die Methode wird einfach nicht gefunden, gibt also den Rückgabewert NULL zurück.
Ich bin jetzt schon etwas weiter, die Methode wird jetzt auch gefunden:
javamethod = env->GetStaticMethodID(FindClass(className.c_str()), methodName.c_str(),"(Ljava/lang/String;)Ljava/net/URI;");Allerdings bekomme ich jetzt folgende Fehlermeldung, wenn ich versuche, die Mehtode auszuführen:
jstring jstring_URI; jstring_URI= env->NewStringUTF(URIName.c_str()); jobject testobject = env->CallStaticObjectMethodA(FindClass(className.c_str()),javamethod, jstring_URI);Fehlermeldung:
Fehler: keine passende Funktion für Aufruf von »JNIEnv_::CallStaticObjectMethodA(_jclass*, _jmethodID*&, _jstring*&)«
und schonwieder weiß ich nicht weiter.
viele Grüße,
Sukka