Masz „UnsupportedOperationException” podczas próby retransformacji klas

JDK1.6, modyfikuj klasę ładowaną dynamicznie w jvm. Kiedy komentuję kod:classReader.accept(classAdapter, ClassReader.SKIP_DEBUG);, wyjątek"UnsupportedOperationException" zniknąć. Właściwie do testowania mojego kodu nie zmodyfikowałem żadnego pola ani metody. Ale program przechwytuje wyjątek"UnsupportedOperationException", po wywołaniuretransformClasses(). Czy ktoś ma podobny wyjątek? Czy mogę dać mi jakieś rady? thx Kody są następujące:

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);
    }

questionAnswers(0)

yourAnswerToTheQuestion