我认为这是因为在Android ICS及更高版本中使用的压缩垃圾收集器。当我尝试调用构造函数异常时出现。我正在使用android 5.1.1。
jclass iaddrclass = env->FindClass("java/net/InetAddress");
if (iaddrclass == NULL) {
jniThrowException(env, "java/lang/ClassNotFoundException",
"java.net.InetAddress");
return;
}
gCachedFields.iaddr_class = (jclass) env->NewGlobalRef(iaddrclass);
jmethodID iaddrclassinit = env->GetMethodID(iaddrclass, "<init>", "()V");
结果,iaddrclassinit为NULL
答案 0 :(得分:0)
你不应该直接构造InetAddress
个对象。 InetAddress
类不提供公共构造函数,而是使用getByName
和getByAddress
等静态方法返回InetAddress
实例。
即使您想出于某种原因通过JNI直接构造InetAddress
对象,there's no no-argument constructor in that class据我所知。
最好按照预期使用静态方法。