お世話になっております。
初の質問になりますが、よろしくお願いします。
前提・実現したいこと
JNIライブラリ(.so)より、mavenの依存関係のクラスを参照したい。
動作環境
Raspberry Pi(Raspbian 2018-06-27版)
.soのmakeはRaspbian上で実施しています。
発生している問題・エラーメッセージ
FindClass時に、戻り値が必ずnullとなっている。
該当のソースコード
呼び出し側
c
1static JavaVM* pCurrentJavavm = NULL; 2static jclass JCLASS = NULL; 3 4JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) 5{ 6 JNIEnv* env; 7 8 pCurrentJavavm = vm ; 9 vm->GetEnv((void**)&env, JNI_VERSION_1_8); 10 11 return JNI_VERSION_1_8; 12} 13 14int GetMethodID(JNIEnv *env) 15{ 16 if ((JCLASS = env->FindClass("Lcom/test/jni/TestJNI")) == NULL) { 17 printf("FindClass failed\n") ; 18 return -1; 19 } 20 return 0; 21}
○補足
GetMethodIDは別のメソッドから呼び出されます。
GetMethodID()が呼び出されるところまでは確認できています。(FindClass failedが表示されるため)
試したこと
java側からJNIライブラリを呼び出すことはできているので、根本的な問題(ロードできていない等)ではないと考えています。
jar実行時に、-verbose:classを付与して実行し、クラスパスがロードされているか確認しましたが、com/test/jni/TestJNIとしてロードされていました。
あなたの回答
tips
プレビュー