第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創(chuàng)建 MethodNode 失敗并顯示 IllegalStateException

創(chuàng)建 MethodNode 失敗并顯示 IllegalStateException

眼眸繁星 2021-12-30 20:33:52
我想獲得MethodNodeofmain()功能public class TestMethodNode {          public void main() {                }}所以我試過這個import org.objectweb.asm.ClassReader;import org.objectweb.asm.ClassVisitor;import org.objectweb.asm.ClassWriter;import org.objectweb.asm.MethodVisitor;import org.objectweb.asm.tree.MethodNode;   import static org.objectweb.asm.Opcodes.ASM7; import java.io.IOException;    public class Instrumentation {    public byte[] editFunction(String className) throws IOException {            byte[] modifiedClass = null;            try {                ClassReader classReader = new ClassReader(className);            ClassWriter classWriter = new ClassWriter(classReader, ClassWriter.COMPUTE_FRAMES);            ClassVisitor classAdapter = new ClassVisitor(ASM7, classWriter) {                    public MethodVisitor visitMethod(                        int access,                        String name,                        String desc,                        String signature,                        String[] exceptions) {                        if (name.equals("main")) {                        final MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);                        MethodNode methodNode = new MethodNode(access, name, desc, signature, exceptions) {                            public void visitEnd() {                                // transform / analyze method here                                accept(methodVisitor);                            }                        };                            return methodNode;                    }  else {                          return super.visitMethod(access, name, desc, signature, exceptions);                    }                }            };                throw ex;        }            return modifiedClass;    }}并IllegalStateException在創(chuàng)建時從 .../asm/tree/MethodNode.java 獲取MethodNode我在做什么錯?(我不想破解 Minecraft,我正在研究并嘗試操作調(diào)用堆棧,其中涉及 lambda 表達(dá)式和嵌套/內(nèi)部類,用于在運行時使用字節(jié)碼操作的工作流引擎。)
查看完整描述

2 回答

?
MM們

TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊

從構(gòu)造函數(shù)MethodNode(int access, String name, String descriptor, String signature, String[] exceptions)的文檔中:


...子類不得使用此構(gòu)造函數(shù)。相反,他們必須使用MethodNode(int, int, String, String, String, String[])版本。


由于您正在創(chuàng)建一個子類,因此您必須更改調(diào)用


new MethodNode(access, name, desc, signature, exceptions) {

}


new MethodNode(ASM7, access, name, desc, signature, exceptions) {

}


查看完整回答
反對 回復(fù) 2021-12-30
?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗 獲得超8個贊

只是為了提供一個完整的運行樣本來檢測main()給定類的函數(shù)


public class Instrumentation {

    public byte[] instrument(String className) {


        byte[] modifiedClass = null;


        try {


            ClassReader classReader = new ClassReader(className);

            ClassWriter classWriter = new ClassWriter(classReader, 4);

            ClassVisitor classVisitor = new ClassVisitor(ASM7) {

                public MethodVisitor visitMethod(

                        int access,

                        String name,

                        String desc,

                        String signature,

                        String[] exceptions) {

                    if (name.equals("main")) {

                        MethodNode methodNode = new MethodNode(ASM7,access, name, desc, signature, exceptions) {

                            public void visitEnd() {

                                // do some stuff here; remove exceptions, insnnode etc. -- smaple iterates through instructions

                                for (int i = 0; i < this.instructions.size();i++) {

                                    AbstractInsnNode node = this.instructions.get(i);

                                }

                            }

                        };

                        return methodNode;

                    } else {

                        return super.visitMethod(access, name, desc, signature, exceptions);

                    }

                }

            };


            classReader.accept(classVisitor,0);

            classReader.accept(classWriter, 0);

            modifiedClass = classWriter.toByteArray();


        } catch (IOException ex) {

           // handle IOException here

        }


        return modifiedClass;

    }

}


查看完整回答
反對 回復(fù) 2021-12-30
  • 2 回答
  • 0 關(guān)注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號