小弟最近在研究JVMTI。现在碰到这么个问题……希望各位达人指教。在我的JVMTI agent中,我利用VM_INIT事件的callback函数初始化如下两个已经在头文件中声明的变量:
runtime_permission = (*env)->FindClass(env, "java/lang/RuntimePermission"); runtime_permission_ctor = (*env)->GetMethodID(env, runtime_permission, "<init>", Ljava/lang/String;)V");然后在java主程序的另一个native函数中,利用以上的两个变量,调用NewObject方法实例化如下变量:jobject runtime_permission_inst = (*env)->NewObject(env, runtime_permission, runtime_permission_ctor, j_lib_name);
但是在调用NewObject方法时导致了JVM崩溃。经过检查,native code抛出了如下异常:
java.lang.InstantiationException: java.nio.charset.Charset看起来程序试图实例化java.nio.charset.Charset这个抽象类,因此抛出了异常。这是我比较困惑的地方,因为并没有任何一条语句试图调用Charset的构造函数。所以我想到,是不是在JVMTI中初始化的变量,不能在其他的native函数中使用呢?求教各位……
runtime_permission = (*env)->FindClass(env, "java/lang/RuntimePermission"); runtime_permission_ctor = (*env)->GetMethodID(env, runtime_permission, "<init>", Ljava/lang/String;)V");然后在java主程序的另一个native函数中,利用以上的两个变量,调用NewObject方法实例化如下变量:jobject runtime_permission_inst = (*env)->NewObject(env, runtime_permission, runtime_permission_ctor, j_lib_name);
但是在调用NewObject方法时导致了JVM崩溃。经过检查,native code抛出了如下异常:
java.lang.InstantiationException: java.nio.charset.Charset看起来程序试图实例化java.nio.charset.Charset这个抽象类,因此抛出了异常。这是我比较困惑的地方,因为并没有任何一条语句试图调用Charset的构造函数。所以我想到,是不是在JVMTI中初始化的变量,不能在其他的native函数中使用呢?求教各位……
解决方案 »
- 请教一个有关JInternalFrame的问题
- VTD-XML 解析XML是怎么回事?
- hibernate hql 语句问!
- 基于Socket 当服务端收到客户端发来的内容,希望把服务端把从客户端接收到得内容返回到客户端
- Class.newInstance与new 构造函数创建一个实例有什么不同吗?
- java 图形显示问题(setVisible和repaint问题)
- 传输数据
- Class.forName("com.borland.sql.SQLAdapter");出错不知何故。
- 谁能帮我解释一下overriden 和overloaded的区别?谢谢!
- 以下几本书籍哪儿有down?
- synchronized的问题
- 关于使用marshaller生成xml文件的一个问题
应该不是这个的问题,因为如果将实例化的语句同样放在JVMTI中,便没有这个错误………………