扩展阅读
  • java命名空间java.lang.management类managementfactory的类成员方法: getoperatingsystemmxbean定义及介绍
  • java.util.Date 和 java.slq.Date 如何最简单实现互换?
  • java命名空间java.lang.management接口memorypoolmxbean的类成员方法: isvalid定义及介绍
  • 轻量级Java开发工具 Java Tools
  • java命名空间java.lang.management接口threadmxbean的类成员方法: isthreadcputimesupported定义及介绍
  • 在下初学java,请各位大虾推荐几个java学习网站吧!
  • java命名空间java.lang.management接口memorymanagermxbean的类成员方法: isvalid定义及介绍
  • 各位大虾,为什么我的java程序能通过编译,但是在用java命令运行程序的时候却老是报错“Exception in thread "main" java.lang.NoClassDe
  • java命名空间java.awt.image接口imageobserver的类成员方法: properties定义及介绍
  • 请问:java 入门以及学好Java要看哪些书籍阿????
  • java命名空间java.sql类types的类成员方法: other定义及介绍
  • Java源码工具 java2html
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • java bean和java class的区别??
  • java命名空间java.awt类color的类成员方法: gettransparency定义及介绍
  • 学习JAVA,请推荐好的 JAVA站点!
  • java命名空间java.lang.management类memoryusage的类成员方法: getcommitted定义及介绍
  • 关于Java好的网站,哪个Java好的教程。
  • java命名空间java.text类decimalformat的类成员方法: setparsebigdecimal定义及介绍
  • 如何将java.util.Date转化成java.sql.Date?
  • java命名空间java.beans接口propertyeditor的类成员方法: getvalue定义及介绍
  • 如何设置java应用程序的风格,如java风格,和windows风格!
  •  
    当前位置:  编程语言>java/jsp

    java命名空间java.lang.instrument接口instrumentation的类成员方法: setnativemethodprefix定义及介绍

     
        发布时间:2014-2-17  


        本文导语:  setnativemethodprefix void setnativemethodprefix(classfiletransformer transformer, string prefix) 通过允许重试,将前缀应用到名称,此方法修改本机方法解析的失败处理。 当与 classfiletransformer 一起使用时,它允许检测本机方...

    setnativemethodprefix

    void setnativemethodprefix(classfiletransformer transformer,
                               string prefix)
    通过允许重试,将前缀应用到名称,此方法修改本机方法解析的失败处理。 当与 classfiletransformer 一起使用时,它允许检测本机方法。 由于本机方法不能直接检测(它们没有字节码),因此必须使用可以检测的非本机方法包装它们。例如,如果有:
       native boolean foo(int x);
    那么可以转换文件(在类的初始定义过程中使用 classfiletransformer),使之变成:
       boolean foo(int x) {
         ... record entry to foo ...
         return wrapped_foo(x);
       }
       
       native boolean wrapped_foo(int x);
    其中 foo 变为实际本机方法的包装器,并带有附加前缀 "wrapped_"。注意,将 "wrapped_" 作为前缀并不合适,因为它很有可能与现有方法重名,因此 "$$$myagentwrapped$$$_" 之类更加合适,但那将减少这些示例的可读性。 包装器将允许在本机方法调用上收集数据,但现在的问题在于如何连接包装的方法与本机实现。 也就是说,方法 wrapped_foo 需要被解析为 foo 的本机实现,即:
       java_somepackage_someclass_foo(jnienv* env, jint x)
    函数允许指定前缀并进行恰当的解析。 明确地说,当标准解析失败时,解析将重新尝试考虑前缀。进行解析有两种方式,使用 jni 函数 registernatives 的显式解析和常规自动解析。对于 registernativesjvm 将尝试以下关联:
       method(foo) -> nativeimplementation(foo)
    若此操作失败,解析将重试,将指定的前缀添加到方法名生成校正解析:
       method(wrapped_foo) -> nativeimplementation(foo)
    对于自动解析,jvm 将尝试:
       method(wrapped_foo) -> nativeimplementation(wrapped_foo)
    若此操作失败,解析将重试,从实现名删除指定的前缀,生成校正解析:
       method(wrapped_foo) -> nativeimplementation(foo)
    注意,前缀只在标准解析失败时使用,因此可以有选择地包装本机方法。 每个 classfiletransformer 可以执行其本身的字节代码转换,因此可能要应用多个包装器层。所以每个转换器需要其自己的前缀。转换是按顺序应用的,因此前缀(如果应用)也将按相同的顺序应用(参见 addtransformer)。 所以,如果三个转换器应用了包装器,foo 将变为 $trans3_$trans2_$trans1_foo。但是,如果第二个转换器没有对 foo 应用包装器,那么它将是 $trans3_$trans1_foo。要有效的确定前缀序列,仅当其非本机包装器存在时才应用中间前缀。因此,在最后一个示例中,即使 $trans1_foo 不是本机方法,$trans1_ 前缀也将应用,因为 $trans1_foo 存在。

    参数
    transformer - 使用此前缀包装的 classfiletransformer。
    prefix - 已应用到包装的本机方法的前缀。
    抛出:
    nullpointerexception - 如果传入 null 转换器。
    unsupportedoperationexception - 如果 jvm 的当前配置不允许设置本机方法前缀(isnativemethodprefixsupported()false)。
    illegalargumentexception - 如果转换器没有注册(参见 addtransformer)。
    从以下版本开始:
    1.6
    相关文章推荐:
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: getallloadedclasses定义及介绍
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: isredefineclassessupported定义及介绍
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: addtransformer定义及介绍
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: getinitiatedclasses定义及介绍
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: isnativemethodprefixsupported定义及介绍
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: getobjectsize定义及介绍
  • java命名空间javax.sound.midi类instrument的类成员方法: instrument定义及介绍
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: removetransformer定义及介绍
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: isretransformclassessupported定义及介绍
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: ismodifiableclass定义及介绍
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: appendtobootstrapclassloadersearch定义及介绍
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: appendtosystemclassloadersearch定义及介绍
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: redefineclasses定义及介绍
  • java命名空间java.lang.instrument接口instrumentation的类成员方法: retransformclasses定义及介绍
  • java命名空间java.lang.instrument类unmodifiableclassexception的类成员方法: unmodifiableclassexception定义及介绍
  • java命名空间java.lang.instrument类illegalclassformatexception的类成员方法: illegalclassformatexception定义及介绍
  • java命名空间java.lang.instrument类classdefinition的类成员方法: getdefinitionclassfile定义及介绍
  • java命名空间java.lang.instrument类classdefinition的类成员方法: classdefinition定义及介绍
  • java命名空间java.lang.instrument接口classfiletransformer的类成员方法: transform定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3