STATIC mp_obj_t mod_jni_cls(mp_obj_t cls_name_in) { const char *cls_name = mp_obj_str_get_str(cls_name_in); if (!env) { create_jvm(); } jclass cls = JJ(FindClass, cls_name); mp_obj_jclass_t *o = m_new_obj(mp_obj_jclass_t); o->base.type = &jclass_type; o->cls = cls; return o; }
int main() { JavaVM* jvm; JNIEnv* env; create_jvm(&jvm, &env); jclass string_class = env->FindClass("java/lang/String"); if (nullptr == string_class) { std::cerr << "could not find String class" << std::endl; exit(EXIT_FAILURE); } }
int main(int argc, char *argv[]) { parse_args(argc, argv); #ifdef CAPS_SUPPORT set_user(); set_caps(); #endif create_thread(); create_jvm(); install_sighandler(); run(); return 0; }
STATIC mp_obj_t mod_jni_array(mp_obj_t type_in, mp_obj_t size_in) { if (!env) { create_jvm(); } mp_int_t size = mp_obj_get_int(size_in); jobject res = NULL; if (MP_OBJ_IS_TYPE(type_in, &jclass_type)) { mp_obj_jclass_t *jcls = type_in; res = JJ(NewObjectArray, size, jcls->cls, NULL); } else if (MP_OBJ_IS_STR(type_in)) { const char *type = mp_obj_str_get_str(type_in); switch (*type) { case 'Z': res = JJ(NewBooleanArray, size); break; case 'B': res = JJ(NewByteArray, size); break; case 'C': res = JJ(NewCharArray, size); break; case 'S': res = JJ(NewShortArray, size); break; case 'I': res = JJ(NewIntArray, size); break; case 'J': res = JJ(NewLongArray, size); break; case 'F': res = JJ(NewFloatArray, size); break; case 'D': res = JJ(NewDoubleArray, size); break; } } return new_jobject(res); }