MethodNodeの作成がIllegalStateExceptionで失敗する

user10608712:

私が取得したいMethodNodemain()機能を

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);
                    }
                }
            };    
            classReader.accept(classAdapter, 0);
            modifiedClass = classWriter.toByteArray();  
        } catch (IOException ex) {    
            throw ex;
        }    
        return modifiedClass;
    }
}

IllegalStateException作成中に... / asm / tree / MethodNode.javaから取得MethodNode

  public MethodNode(
      final int access,
      final String name,
      final String descriptor,
      final String signature,
      final String[] exceptions) {
    this(Opcodes.ASM7, access, name, descriptor, signature, exceptions);
    if (getClass() != MethodNode.class) {
      throw new IllegalStateException();
    }
  }

私は何を間違っているのですか?(私はMinecraftをハックしたくないので、実行時にバイトコード操作を使用するワークフローエンジンのラムダ式とネストされた/内部クラスを含むコールスタックを調査して操作しようとしています。)

ホルガー:

コンストラクタMethodNode(int access, String name, String descriptor, String signature, String[] exceptions)ドキュメントから

サブクラスはこのコンストラクタを使用してはなりません代わりに、MethodNode(int, int, String, String, String, String[])バージョンを使用する必要があります

サブクラスを作成しているので、呼び出しを変更する必要があります

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

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

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

@WebMvcTestがjava.lang.IllegalStateExceptionで失敗する:ApplicationContextのロードに失敗しました

分類Dev

ScalaTestでテストするときに、Akkaが「IllegalStateException:終了中または終了中に子を作成できない」で失敗するのはなぜですか?

分類Dev

SpringBootTestが「IllegalStateException-ServletContextセットなし」で失敗する

分類Dev

CloudformationでのDynamoDBテーブルの作成が失敗する

分類Dev

MicrosoftServicebusがQueueClientの作成に失敗する

分類Dev

Linuxでfopen()がファイルの作成に失敗する

分類Dev

AzureDockerの作成が環境セクションで失敗する

分類Dev

Azure Logic AppFTPのファイル作成がMaxRequestCountReachedで失敗する

分類Dev

PersistentVolumeClaimがAlicloudKubernetesでの作成に失敗する

分類Dev

Dockerイメージの作成がcentosで失敗する

分類Dev

StatefulWidgetのルート作成が失敗するのはなぜですか?

分類Dev

なぜスレッドの作成が失敗するのですか?

分類Dev

Spring Boot DataJpaTest(リポジトリ用)がjava.lang.IllegalStateException:ApplicationContextのロードに失敗して失敗する

分類Dev

PyinstallerがWindowsのpyscardで失敗する

分類Dev

--tagsの追加でawscloudformationdeployが失敗する

分類Dev

式の抽出がscalaで失敗する

分類Dev

「libarchive」のcmakeがOSXMaverickで失敗する

分類Dev

Windowsでの `gem installberkshelf`が失敗する

分類Dev

JenkinsでOpencoverNUnitCoverageの生成が失敗する

分類Dev

WindowsでのTensorFlow:「pipinstalltensorflow」が失敗する

分類Dev

xlwingsのRunPythonがMACで失敗する

分類Dev

ChromenativeMessagingの例がWindowsで失敗する

分類Dev

Jenkinsの「ユーザーの作成」がMacOS X HighSierraで失敗する

分類Dev

GeoMesa:ポリゴンの作成が一部の座標で失敗する

分類Dev

WSLでのGitHubリポジトリのクローン作成が失敗する

分類Dev

Windows10でのシステムイメージの作成が失敗する

分類Dev

Sqoop:リンクの作成が数値形式の例外で失敗する

分類Dev

Route53ホストゾーンの作成がInvalidClientTokenIdで失敗する

分類Dev

ステップでEMRクラスターの作成が失敗する

Related 関連記事

  1. 1

    @WebMvcTestがjava.lang.IllegalStateExceptionで失敗する:ApplicationContextのロードに失敗しました

  2. 2

    ScalaTestでテストするときに、Akkaが「IllegalStateException:終了中または終了中に子を作成できない」で失敗するのはなぜですか?

  3. 3

    SpringBootTestが「IllegalStateException-ServletContextセットなし」で失敗する

  4. 4

    CloudformationでのDynamoDBテーブルの作成が失敗する

  5. 5

    MicrosoftServicebusがQueueClientの作成に失敗する

  6. 6

    Linuxでfopen()がファイルの作成に失敗する

  7. 7

    AzureDockerの作成が環境セクションで失敗する

  8. 8

    Azure Logic AppFTPのファイル作成がMaxRequestCountReachedで失敗する

  9. 9

    PersistentVolumeClaimがAlicloudKubernetesでの作成に失敗する

  10. 10

    Dockerイメージの作成がcentosで失敗する

  11. 11

    StatefulWidgetのルート作成が失敗するのはなぜですか?

  12. 12

    なぜスレッドの作成が失敗するのですか?

  13. 13

    Spring Boot DataJpaTest(リポジトリ用)がjava.lang.IllegalStateException:ApplicationContextのロードに失敗して失敗する

  14. 14

    PyinstallerがWindowsのpyscardで失敗する

  15. 15

    --tagsの追加でawscloudformationdeployが失敗する

  16. 16

    式の抽出がscalaで失敗する

  17. 17

    「libarchive」のcmakeがOSXMaverickで失敗する

  18. 18

    Windowsでの `gem installberkshelf`が失敗する

  19. 19

    JenkinsでOpencoverNUnitCoverageの生成が失敗する

  20. 20

    WindowsでのTensorFlow:「pipinstalltensorflow」が失敗する

  21. 21

    xlwingsのRunPythonがMACで失敗する

  22. 22

    ChromenativeMessagingの例がWindowsで失敗する

  23. 23

    Jenkinsの「ユーザーの作成」がMacOS X HighSierraで失敗する

  24. 24

    GeoMesa:ポリゴンの作成が一部の座標で失敗する

  25. 25

    WSLでのGitHubリポジトリのクローン作成が失敗する

  26. 26

    Windows10でのシステムイメージの作成が失敗する

  27. 27

    Sqoop:リンクの作成が数値形式の例外で失敗する

  28. 28

    Route53ホストゾーンの作成がInvalidClientTokenIdで失敗する

  29. 29

    ステップでEMRクラスターの作成が失敗する

ホットタグ

アーカイブ