尝试重新转换类时出现“UnsupportedOperationException”

2023-12-05

JDK1.6,动态修改jvm中加载的类。当我评论代码时:classReader.accept(classAdapter, ClassReader.SKIP_DEBUG);, 例外情况"UnsupportedOperationException"消失。 实际上,为了测试我的代码,我没有修改任何字段或方法。但程序捕获异常"UnsupportedOperationException",调用后retransformClasses()。有人有类似的例外吗?有人能给我一些建议吗?谢谢 代码如下:

public byte[] modifySleepMethod() throws Exception {
     System.out.println("Call modifySleepMethod");
     ClassReader classReader = new ClassReader(classfileBuffer);
     System.out.println("new classreader");
     ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS);
     System.out.println("new classwriter");
     ClassAdapter classAdapter = new ModifyMethodClassAdapter(classWriter);

     classReader.accept(classAdapter, ClassReader.SKIP_DEBUG);

     byte[] classFile = null;
     classFile = classWriter.toByteArray();

     FileOutputStream fos;
     try {
        fos = new FileOutputStream("D:\\testfos\\b\\Example2.class");
        System.out.println("ddddddmodifymethodtest");
        fos.write(classFile);
        fos.close();
     } catch (FileNotFoundException e) {
        e.printStackTrace();
     }catch (IOException e) {
        e.printStackTrace();
     }
     return classFile;      
     }
}

|

protected void transform(Class<?> clazz, ClassLoader classLoader) {
    DemoTransformer dt = new DemoTransformer(clazz.getName(), classLoader);
    instrumentation.addTransformer(dt, true);
    try {

        instrumentation.retransformClasses(clazz);

    } catch (Exception ex) {
        throw new RuntimeException("Failed to transform [" + clazz.getName() + "]", ex);
    }

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试重新转换类时出现“UnsupportedOperationException” 的相关文章

随机推荐

  • Symfony2 Twig 获取子实体的总计数

    存在以下实体 农场 谷仓和动物 一个农场可以有很多谷仓 一个谷仓可以有很多动物 在 TWIG 模板中显示农场时 还应显示动物的数量 做这个的最好方式是什么 我创建了一个 TWIG 扩展 它允许我轻松显示谷仓的数量 public functi
  • urllib、urllib2、urllib3 和 requests 模块之间有什么区别?

    在Python中 它们之间有什么区别urllib urllib2 urllib3 and requests模块 为什么是三个 他们似乎做着同样的事情 我知道已经说过了 但我强烈推荐requestsPython 包 如果您使用过 Python
  • 如何在 Android 中点击图标打开侧边栏?

    我已经实施了Hamburger酒吧与App toolbar他们都工作得很好 以下是快照toolbar and hamburgerbar Hamburger bar 我可以通过滑动打开此栏 但我也想通过单击可绘制图标 右上角图标 将其打开 我
  • 在 Qt 中从字符串中提取参数,包括带引号的区域

    我有一个 Qt5 C 程序 它接收一个包含程序名称和可能的参数的 QString 我需要将这个 QString 分成多个字符串 例如 字符串 tmp myprog param1 param2 2 param3 1 2 3 p 4 应该分为
  • 如何在文件名中使用索引

    这可能是一个微不足道的问题 我不是一个专业的程序员 我而是一个正在使用 C 做一些数值实验的数学家 我想要我的输出 针对不同的参数值将实验写入不同的文件中 MWE 应该做这样的事情 创建一个由 i 索引的文件指针 打开名为 file i 的
  • 如何在oracle中提取或更新xml属性值

    表名称 conn details 我有这个 xml 它存储在 Oracle 的 CLOB 列 conn param 中
  • 从 Windows 服务调用时 System.Diagnostics.Process.Start() 无法启动进程

    我正在尝试从 NET Windows 服务启动外部进程 过去我用过Process Start 采用可执行路径和命令行字符串的重载 这有效 但现在我想启动该过程并让它在特定用户的上下文中运行 所以我称这个版本为Start public sta
  • 更改数据框中的一些数值

    我有一个数据框 其中两个变量 纬度和经度 的值不正确 数据框中的错误值列为 999 00 正确值应分别为 42 68 和 72 47 我想要一种简单的方法来使用 dplyr 替换这些值 但我的尝试 见下文 没有成功 下面提供的错误 df L
  • 使用 MIP SDK 解密加密的 Office 365 电子邮件

    我正在关注论坛主题 Azure 信息保护 如何解密来自 EWS API 的 EML 我有兴趣了解解密加密 Office 365 电子邮件的步骤 您能否评论以下内容 正如您提到的 必须将电子邮件转换为 msg 文件 所以我的问题是 在将电子邮
  • If-Else-If 链和多个 If 哪个更好

    假设我有一个随机数 哪个更有效率 if num 1 else if num 2 else if num 3 else if num 4 else if num 5 else or if num 1 if num 2 if num 3 if
  • 如何删除字符串句子中的空格

    我正在尝试编写一段代码来删除所有前导 尾随和中间的句子空格 但只保留单词之间的一个空格 例如 如果输入是 This is my string 输出应该是 This is my string 到目前为止我已经想出了这个 include
  • python sys.getsizeof方法在不同版本的python上返回不同的大小

    sys getsizeof在不同版本的 python 上返回不同大小的 unicode 字符串 sys getsizeof u Hello World return 96 on Python 2 7 3并返回72 on Python 2 7
  • Laravel Eloquent 模型缓存

    我正在学习 laravel 雄辩拉拉维尔 5 6 我已经使用过数据库查询生成器和缓存 数据库查询生成器的检索和存储 value Cache remember users minutes function return DB table us
  • 将 Windows 窗体 ToolStripMenuItem ShortcutKeys 属性设置为小键盘键不起作用

    We have the ability to define shortcut keys for Windows Forms application menu items That way I can tell a menu item Fil
  • 当sproc使用RETURN @value时可以使用cmd.ExecuteScalar吗

    你能用吗 int blah Convert ToInt32 cmd ExecuteScalar 当存储过程的最后一条语句执行时 RETURN value 我只能让它工作 如果它 选择 值 另外 这给了我一个对象空异常 int blah in
  • 使用现有列名称和值创建新列[重复]

    这个问题在这里已经有答案了 我正在尝试使用数据集中现有的列名称创建一个新列 具体来说 在这个数据集中 一行对应一个呼吸道样本 有 10个病毒检测结果 每个结果都有一个对应的列 值 0 表示该病毒检测呈阴性 值 1 表示该病毒检测呈阳性 数据
  • 如何使用 vue.js 计算 或 上的样式?

    我在用vuejs 样式绑定在计算样式时动态呈现更改 这对于我的 Vue 实例范围内的所有内容都非常有效 但是我如何计算 body 或 html 标签的样式 当您可以绑定 vue 实例时 这曾经是可能的 但 vue 不再允许您这样做 我想动态
  • 使用 Swig 将 Java 对象传递给 C++...然后返回 Java

    当使用 Java C Swig 和 Swig 的控制器时 我可以将继承 C 类的 Java 对象传递给 C 这很好用 现在 当我将同一个 Java 对象从 C 代码传递回 Java 时 Swig 会创建一个new用于包装 C 指针的 Jav
  • 在另一个目录中获取图像的路径

    我的图像位于 src main webapp images 文件夹中 我的 html 代码位于 src main webapp app report 文件夹中 如何指定其他目录中提到的图像的路径 我努力了 img src src main
  • 尝试重新转换类时出现“UnsupportedOperationException”

    JDK1 6 动态修改jvm中加载的类 当我评论代码时 classReader accept classAdapter ClassReader SKIP DEBUG 例外情况 UnsupportedOperationException 消失