首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JBoss类中的LocalVariableTable已损坏

JBoss类中的LocalVariableTable已损坏
EN

Stack Overflow用户
提问于 2012-11-28 23:21:55
回答 2查看 1.1K关注 0票数 1

我正在使用ASM4.0,在使用JBoss发行版的org/jboss/jms/client/delegate/ClientClusteredConnectionFactoryDelegate.class类时遇到了一个奇怪的问题

问题是,在对这个类的一个方法进行无操作转换后,

公共同步的org$jboss$jms$client$delegate$ClientClusteredConnectionFactoryDelegate$getClientAOPStack$aop() byte[]具有以下特性

代码语言:javascript
复制
  LineNumberTable:
    line 232: 0
    line 240: 52
    line 242: 77

   LocalVariableTable:
    Start  Length  Slot  Name   Signature
    52      -52      2    aopStackProvider
Lorg/jboss/jms/delegate/ConnectionFactoryDelegate;
    0      0      2    e
Lorg/jboss/jms/exception/MessagingNetworkFailureException;
    36      -36      1    server       I
    0      0      0    this
Lorg/jboss/jms/client/delegate/ClientClusteredConnectionFactoryDelegate;

在转型之前,它们是:

代码语言:javascript
复制
   LineNumberTable:
    line 232: 0
    line 234: 34
    line 238: 45
    line 240: 52
    line 242: 77
    line 244: 84
    line 246: 85
    line 234: 116
    line 250: 122

   LocalVariableTable:
    Start  Length  Slot  Name   Signature
    52      32      2    aopStackProvider
Lorg/jboss/jms/delegate/ConnectionFactoryDelegate;
    85      31      2    e
Lorg/jboss/jms/exception/MessagingNetworkFailureException;
    36      86      1    server       I
    0      132      0    this
Lorg/jboss/jms/client/delegate/ClientClusteredConnectionFactoryDelegate;

因此,我在类文件org/jboss/jms/client/delegate/ClientClusteredConnectionFactoryDelegate的LocalVariableTable中有java.lang.ClassFormatError: Invalid length 65484

有人能帮我解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-02 00:54:23

我的一个同事发现:如果由于某种原因,在原始字节码LocalVariableTable中包含无效的偏移量,这些偏移量不是指向指令的末尾,而是位于指令的中间,那么在使用ASM访问之后,就会得到负的偏移量。解决方案是通过使用ASM的ClassReader.SKIP_DEBUG选项完全剥离调试信息。或者检测ASM何时无法确定局部变量的结束偏移量,并在MethodAdaptervisitLocalVariable方法中跳过该特定变量

票数 1
EN

Stack Overflow用户

发布于 2012-11-28 23:43:00

当您将不完整的字节数组(或流)作为输入传递到ClassReader时,通常会发生这种情况。您可以通过比较字节数组的大小和将CheckClassAdapter添加到无操作转换访问者链中来检查这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13608442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档